gpt4 book ai didi

Android 应用程序在被杀死时不调用 "onDestroy()"(ICS)

转载 作者:IT老高 更新时间:2023-10-28 23:11:08 25 4
gpt4 key购买 nike

我正在使用蓝牙通信(使用专有协议(protocol))开发一个 android 应用程序,我需要捕捉应用程序被终止的时刻。

我想使用“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() 中仅保留您希望在应用程序被终止时运行的代码。

编辑:

从您的评论来看,您似乎希望在您的应用程序进入后台时运行一些代码,但如果它因为您启动了一个 Intent 而进入后台,则不是。 AFAIK,Android 中没有默认处理此问题的方法,但您可以使用以下方法:

有一个类似的 bool 值:

boolean usedIntent = false;

现在在使用 Intent 之前,将 bool 值设置为 true。现在在你的 onPause() 中,将 Intent 案例的代码移动到这样的 if block 中:

if(usedIntent)
{
//Your code
}

最后,在您的 onResume() 中,再次将 bool 值设置为 false,以便它可以正确处理您的应用被非 Intent 方式移入后台。

关于Android 应用程序在被杀死时不调用 "onDestroy()"(ICS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com