Mac*_*tle 5 android android-intent android-activity
[编辑:问题解决了.请参阅下面的答案.]
在我的应用程序中,我调用系统相机拍照,然后处理结果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]
Run Code Online (Sandbox Code Playgroud)
这就是我开始相机活动的方式,以防你想知道:
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);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能找出为什么我的活动被杀死,从堆栈中删除而不是再次创建?
好的,我发现了问题.问题并不在于活动被杀,而是活动没有得到恢复.我意识到当你的活动在清单中宣布时会发生这种情况android:noHistory="true".因此,活动在被杀死时从堆栈中移除,而之前的活动被显示出来.
删除noHistory参数后,使用相机后活动开始再次出现.
| 归档时间: |
|
| 查看次数: |
7490 次 |
| 最近记录: |