+-
Android应用在被杀时不会调用“onDestroy()”(ICS)
我正在开发一个使用蓝牙通信的 Android应用程序(使用一个propetary协议),我需要抓住应用程序被杀的那一刻.

我想使用“onDestroy()”方法,但每次应用程序被杀死时都不会调用它.
我注意到当我按下后退按钮时会调用它,有时只有当我从任务管理器中删除应用程序时才会调用它.

问题是:我怎样才能抓住应用程序被杀之前的那一刻?

这是我试图使用的代码:

@Override
public void onDestroy() {
    sendMessage(msg);
    Log.d("SampleApp", "destroy");
    super.onDestroy();
}

@Override
public void finish(){

    sendMessage(msg);
    Log.d("SampleApp", "finish");
    super.finish();
}

不幸的是,每次我从任务管理器关闭应用程序时都不会调用finish()并且不会调用onDestroy.

我怎么处理这个?

最佳答案
如文档 here所述,无法保证将调用onDestroy().相反,只要应用程序进入后台,就使用 onPause()来执行您想要执行的操作,并且只在您的应用程序被终止时将该代码留在onDestroy()中.

编辑:

根据您的评论,您似乎希望在应用程序进入后台时运行一些代码,但是如果因为您启动了一个意图而进入后台则不会. AFAIK,Android中没有默认处理此方法的方法,但您可以使用以下内容:

有一个布尔像:

boolean usedIntent = false;

现在在使用intent之前,将boolean设置为true.现在在onPause()中,将intent case的代码移动到像这样的if块中:

if(usedIntent)
{
//Your code
}

最后,在你的onResume()中,再次将布尔值设置为false,以便它可以通过非意图的方式处理你的应用程序被移动到后台.

点击查看更多相关文章

转载注明原文:Android应用在被杀时不会调用“onDestroy()”(ICS) - 乐贴网