[РЕДАКТИРОВАТЬ: Проблема решена.Пожалуйста, смотрите мой ответ ниже.]
В моем приложении я вызываю системную камеру, чтобы сделать снимок, а затем обрабатываю результат в onActivityResult
.Вы знаете, обычный.Раньше это работало, но теперь моя деятельность по вызову убивается, пока я делаю снимок.В частности, onDestroy()
вызывается в моей активности сразу после нажатия кнопки затвора камеры.Фотография действительно сделана и сохранена (я проверил, что файл записан на SD-карте).После того как я принимаю фотографию, вместо того, чтобы вернуться к вызывающему действию и вызвать onActivityResult
, вызывается предыдущее действие в стеке действий.Я не вижу исключений в logcat.Мой обработчик пользовательских исключений не вызывается.Если это имеет значение, мое приложение также включает службу, которая прослушивает обновления GPS, но я отменяю регистрацию всех получателей в onPause()
.
Вот стек вызовов для MyCallingActivity.onDestroy()
:
Thread [<1> main] (Suspended (breakpoint at line 303 in NewPlaceDetailsActivity))
NewPlaceDetailsActivity.onDestroy() line: 303
ActivityThread.performDestroyActivity(IBinder, boolean, int, boolean) line: 2663
ActivityThread.handleDestroyActivity(IBinder, boolean, int, boolean) line: 2694
ActivityThread.access$2100(ActivityThread, IBinder, boolean, int, boolean) line: 117
BinderProxy(ActivityThread$H).handleMessage(Message) line: 968
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 130
ActivityThread.main(String[]) line: 3687
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 507
ZygoteInit$MethodAndArgsCaller.run() line: 842
ZygoteInit.main(String[]) line: 600
NativeStart.main(String[]) line: not available [native method]
Вот как я запускаю работу камеры, если вам интересно:
protected void startCamera() {
createPhotoDirsIfNeeded();
String fileName = "temp.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
m_capturedImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
m_photoFileName = APP_PHOTO_PATH + "/" + DateFormat.format(DATE_FORMAT, Calendar.getInstance().getTime()) + ".jpg";
File picFile = new File(m_photoFileName);
if(picFile.exists()) {
picFile.delete();
}
// start the camera activity
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(picFile));
startActivityForResult(intent, IntentHelper.REQUEST_TAKE_PHOTO);
}
Какя могу узнать, почему моя активность уничтожается и удаляется из стека, а не создается снова?