当循环过程运行时,Android不会调用onPause和onStop

时间:2015-12-31 04:02:30

标签: java android lifecycle

我创建了一个非常简单的Android应用程序,只需一个按钮名称就可以生成'。活动处理onclick事件。

public void autoGenerate(View view) throws InterruptedException {
    Log.v("Hello", "I'm Duy");
    final int count = 10000;
    for (int i = 0; i < count; i++) {
        Log.v("Count", String.valueOf(i));
        Thread.sleep(1000);
    }
}

我已将日志添加到onPause和onStop。

@Override
protected void onPause() {
    Log.v("Life Cycle", "onPause ...");
    super.onPause();
}

@Override
protected void onStop() {
    Log.v("Life Cycle", "onStop ...");
    super.onStop();
}

我单击Generate按钮,此应用程序在LogCat中打印计数器值。然后我点击手机上的主页按钮,在循环完成后没有回调。我完全不理解这种情况,因为我认为当应用程序消失时,系统应该调用onPause和onStop上的回调。

任何人都可以帮助我吗?我只是一个开始阅读android电子书的初学者。

2 个答案:

答案 0 :(得分:1)

进入循环后,应用程序将不会退出,直到循环结束。而不是直接使用循环,启动一个新线程来执行循环。即使您关闭应用程序,循环也将在后台运行。

答案 1 :(得分:1)

UI点击事件是从应用程序的主线程处理的。 你的for循环阻塞了主线程,因此onPause生命周期调用被延迟了。