Android 当进程被终止时,永远不要调用Create

Android 当进程被终止时,永远不要调用Create,android,android-lifecycle,Android,Android Lifecycle,我正在构建一个应用程序,它可以在我的Nexus7和GalaxyS2上正常工作。现在我已经在GalaxyS3上进行了测试,但不知何故,内存管理的难度要大得多。如果我按下home按钮并等待几分钟,OnCreate会再次被调用,因此我假设进程已被终止。但是,如果进程被终止,对于这个特定的应用程序,我希望它启动另一个活动 我可以使用重写onStop和onPause,但从活动生命周期来看,这会导致一些不必要的行为。如果未终止进程,则可以返回活动 有解决方案吗?您可以在onCreate中使用savedIns

我正在构建一个应用程序,它可以在我的Nexus7和GalaxyS2上正常工作。现在我已经在GalaxyS3上进行了测试,但不知何故,内存管理的难度要大得多。如果我按下home按钮并等待几分钟,OnCreate会再次被调用,因此我假设进程已被终止。但是,如果进程被终止,对于这个特定的应用程序,我希望它启动另一个活动

我可以使用重写onStop和onPause,但从活动生命周期来看,这会导致一些不必要的行为。如果未终止进程,则可以返回活动


有解决方案吗?

您可以在
onCreate
中使用
savedInstanceState
,如下所示:

if( savedInstanceState != null ) {
            //Toast.makeText(this, savedInstanceState.getString("message")+"--> ", Toast.LENGTH_LONG).show();
            Intent intent = new Intent(First.this, Second.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return;
        }

如果系统已确定需要释放一些资源,则按home(主页)按钮可以销毁您的活动


这可能是因为活动正在完成(有人对其调用finish()),或者是因为系统正在临时销毁此活动实例以节省空间。您可以使用isFinishing()区分这两种情况方法。

这是否意味着在第二次OnCreate中,您希望启动第一次OnCreate之外的其他活动?这就解决了问题,因为只有当活动被销毁时,savedInstanceState才不为null。谢谢。