[EDIT: Проблема решена. Пожалуйста, смотрите мой ответ ниже.]
В моем приложении я вызываю системную камеру, чтобы сделать снимок, а затем обрабатываю результат в 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);
}
Как узнать, почему мой активность уничтожается И удаляется из стека, а не создается снова?