我正在启动媒体意图拍摄照片。在用户拍摄照片并回到之前的活动之后,整个应用程序重新启动。由于这种情况一直没有发生,我认为我的应用程序进入后台,当设备内存不足时,android会杀死它。Android系统在启动Media Intent时停止应用程序
有什么办法让我的应用程序无法进入背景吗?
谢谢!
我正在启动媒体意图拍摄照片。在用户拍摄照片并回到之前的活动之后,整个应用程序重新启动。由于这种情况一直没有发生,我认为我的应用程序进入后台,当设备内存不足时,android会杀死它。Android系统在启动Media Intent时停止应用程序
有什么办法让我的应用程序无法进入背景吗?
谢谢!
这是Android的正常行为,一切活动目前未显示在屏幕上(onStop
后),随时都可能被杀死(即onDestory
)如果系统内存不足。
这通常发生在我们的测试设备之一的应用程序上,无论我们的应用程序如何,这些设备都有内存问题。
您可以通常当您通过意图打开相机,然后旋转设备(纵向横向)重新创建此行为,这也将杀死并重新创建您的应用程序。
为了解决这个问题,你需要扩展onSaveInstanceState
并在onCreate
使用savedInstanceState
参数从你杀了实例传递给你的新实例一些重要信息(如“我们是在从相机得到一个PIC中间” )。
好吧,这不是我所希望的答案,但我发现试图保存应用程序状态是解决我的问题的唯一方法。谢谢! – timoschloesser 2012-04-25 07:32:51
你有使用Phonegap的应用程序的解决方案吗? – 2018-02-13 13:30:40
我能想到的两种可能性...
这不是杀死活动,但目的推出的新活动。
<活动 机器人:您可以通过将一个标签在你的manifest.xml作为活动标签像这样的属性停止这个名字=
机器人“nameOfActivity”:launchMode =‘singleTop’/ >
确保媒体意图处于处理照片的活动之下,而不是主要/启动器活动。
当您启动媒体下面的方法代替startActivity(意向)意图使用
startActivityForResult(intent, REQUEST_CODE); //private int REQUEST_CODE = 232
所启动的活动结束时,您的电话活动将启动。您需要处理这个使用下面的函数
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
//Perform your task
}
}
的活动时间需要重写follwoing方法
@Override
public void onBackPressed() {
Intent intent = new Intent();
setResult(REQUEST_CODE, intent);
super.onBackPressed();
}
startActivityForResult()是为特定任务开始活动,并得到想要的结果的特殊方式。被叫活动将发回数据。
您可以使用getExtra()& getExtra方法意图在两个活动之间发送和接收数据。
这将有望解决您的问题。 如果你有疑问评论。如果可能的话分享你的代码,这样可以更清楚。
IMO两个选项:
我遇到了这个问题,并在R & D之后得到了一个解决方案。 设置目标的Android 4.0,然后在AndroidManifest.xml中添加活动的这一行:
机器人:configChanges = “屏幕布置| uiMode |方向|屏幕尺寸| smallestScreenSize”
这对我的作品。
你不能阻止你的应用程序转到后台,但你可以使它保存状态并恢复它 – zapl 2012-04-16 14:58:53
如果你想拍一张照片,你的应用程序必须去后台..在相机应用程序后面。 。 – Ronnie 2012-04-22 06:36:33
显示用于启动相机的代码.. – Ronnie 2012-04-22 06:36:57