Android杀死活动

时间:2014-09-26 12:14:08

标签: android android-lifecycle activity-lifecycle

在我的应用程序中,我打开手机的设置(对于用户启用wifi或数据网络),如下所示:

startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));

当我再次调用onCreate()时返回我的活动时?我希望可以调用onStart() - > onResume()。但是,由于这种情况,我猜Android因内存目的而将其杀死。令我感到困扰的是onDestroy()从未被称为这是正常的吗?可以onCreate()调用两次活动,而onDestroy()没有被调用过一次?

    @Override
protected void onDestroy() {

    Log.e("onDestroy","Im destroyed");

    try{
        if(pois!=null)
            pois.clear();
        pois=null;
    }catch(Exception e){
        ;
    }

    super.onDestroy();
    unbindDrawables(findViewById(R.id.RootView));
    System.gc();
}


@Override
protected void onPause(){

    super.onPause();
    restore();

}

3 个答案:

答案 0 :(得分:0)

startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));后请勿致电finish()。如果你调用finish(),你的活动就会被销毁。所以只需调用startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));在设置中,如果您单击后退而不重新创建活动,您的应用程序将被打开。将执行 onStart() onResume()

答案 1 :(得分:0)

一旦调用onCreate方法,就不能在不破坏它的情况下再次调用它。
在您调用create方法然后打开手机设置的代码时,您的应用会自动调用暂停状态,并在您返回应用程序后执行您需要的设置onresume状态会自动调用。

答案 2 :(得分:0)

这可以按照你想要的方式运行得很好,你也可以尝试从终端知道应用程序堆栈中的活动

adb shell <enter>
dumpsys activity | grep -i



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
    Log.e("MainActivity", "onCreate");
}

@Override
protected void onResume() {
    Log.e("MainActivity", "OnResume");
    super.onResume();
}