相机或图库意图会破坏某些设备上的旧活动

Pio*_*otr 13 android android-intent android-activity

我正在开发使用WebView显示其内容的应用程序.但是,它需要打开相机或图库才能选择图片:

    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, 1);

    Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(galleryIntent, 2);
Run Code Online (Sandbox Code Playgroud)

它在大多数设备上运行良好,但在HTC One和其他几个设备上都会破坏我的活动,因此在返回时会重新加载webview.我没有noHistory旗帜AndroidManifest.xml.可能导致该问题的原因是什么?我可以避免破坏我在这里的活动吗?

Nik*_*Nik 7

通常,Android会在其他应用运行时杀死您的活动.

您必须在onSaveInstanceState中保存活动状态,并且将在onRestoreInstanceState或onCreate中重新创建活动恢复状态.

要恢复WebView的状态,您可以使用cookie和会话并保存上次打开的URL.当重新创建活动时,只需导航WebView上次保存的URL并处理来自摄像头的结果.

  • 我的问题是 WebView 正在加载一个巨大的网页,我不想在选择照片、打开浏览器等后几秒钟重新加载它。 (2认同)