具体来说,如果我在Activity类中运行了一个方法,那么当手机进入休眠状态(CPU关闭)时,方法是否会在调用onPause()之前运行完成?
class MyActivity extends Activity {
...
public void doSomeWork() {
...
... // <-- Device goes to sleep at this point in time
...
return; // Do we get here before onPause() is called?
}
...
@Override
public void onPause() {
...
}
...
}
除了Activities之外,当设备进入休眠状态时,一个正在运行的线程(可能由一个Activity类启动)是否会在处于的任何代码行中断?我在这篇文章中看到了相互矛盾的答案:Does a Thread launched by Activity continue running once the device goes to sleep?
更进一步,我知道当设备唤醒时,Activity的onResume()将被调用;如果上面的doSomeWork()或前面提到的线程在睡觉时中途确实被中断了,剩余的代码会恢复吗?
提前感谢任何见解。
答案 0 :(得分:0)
这被认为是一个很好的Android练习,不能在主UI线程上运行长任务,因此你的doSomeWork()
应该在几百毫秒内完成并在{{1}之前达到return
语句调用。
关于onPause()
中途中断 - 发生这种情况的唯一可能性是当你的应用程序显示可怕的ANR对话框并强行关闭时,所以你不应该担心在中途重新启动它。
答案 1 :(得分:-1)
此处当您离开活动或弹出窗口出现在您的活动中时,就会出现电话呼叫,或者您在调用Pause时旋转屏幕。 您提供的链接谈论AsyncTask。 AsyncTask是一个在获取一些数据后运行后台并更新UI的线程。在此过程中,如果用户旋转手机,Android将杀死活动并重新创建线程是否与活动相关联,那么您的活动将不会被杀死但是会泄漏。
如果您需要有关AsyncTask&amp;活动你可以读这个 Is AsyncTask really conceptually flawed or am I just missing something?