Привет, ребята, я, посмотрев вокруг, нашел лучшее решение. как #jia Джордж указал, что вы должны сбросить входной поток после первого декодирования, проблема в том, что некоторый сброс времени не поддерживается, но вы можете обернуть входной поток внутри BufferedInputStream, и это нормально.
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BufferedInputStream buffer=new BufferedInputStream(is);
BitmapFactory.decodeStream(buffer,null,options);
buffer.reset();
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth,reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
BitmapFactory.decodeStream(buffer,null,options);
Почему вы хотите это сделать? Если произошла ошибка, зарегистрируйте ее в журнале событий и выдайте исключение. Ваша служба не будет запущена, и пользователь будет проинформирован о том, что что-то случилось.
Вы можете использовать Environment.FailFast () . Просто имейте в виду, что он игнорирует любые блоки try-catch-finally.
Используйте ServiceController и остановите его, а затем немедленно вернитесь.