Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓don';当循环进程运行时,不要调用onPause和onStop_Java_Android_Lifecycle - Fatal编程技术网

Java 安卓don';当循环进程运行时,不要调用onPause和onStop

Java 安卓don';当循环进程运行时,不要调用onPause和onStop,java,android,lifecycle,Java,Android,Lifecycle,我创建了一个非常简单的android应用程序,其中一个按钮名为“Generate”。活动句柄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", Stri

我创建了一个非常简单的android应用程序,其中一个按钮名为“Generate”。活动句柄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);
    }
}
我点击Generate按钮,这个应用程序在LogCat中打印计数器值。然后我点击我手机上的home(主页)按钮,在循环完成之前不会发生回调。我完全不理解这种情况,因为我认为当应用程序消失时,系统应该在暂停和停止时调用回调

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

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

有人能帮我吗?我只是一个开始阅读android电子书的初学者。

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

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

您几乎不应该调用
thread.sleep()。曾经正如您现在所注意到的,它会中断活动的生命周期方法。没有回调,因为我怀疑(Thread.sleep(1000);)正在休眠线程1秒X 10000=2.778小时我理解。因此,onclick事件长期处理我的click,回调函数应该与循环在同一个线程中,它是一个UI线程。系统需要等待主线程完成循环。这就是为什么这里没有回叫。我不应该再使用UI线程执行耗时较长的任务。@DuyNguyenThanh是的,您必须使用runOnUiThread()并创建一个新线程来执行循环或任何其他任务operation@DuyNguyenThanh如果有帮助,请接受我的回答