停止线程onPause

Sty*_*2go 1 android android-intent

我想在用户离开活动时停止一个线程.这听起来很简单但没有功能,我试过,有效.

我用代码启动Activity

lovi = new Intent(getApplicationContext(), listoverview.class);
lovi.putExtra("reloadAll", true);
startActivity(lovi);
Run Code Online (Sandbox Code Playgroud)

在listoverview的onCreate中,我用代码启动Thread

rlMF.start();
Run Code Online (Sandbox Code Playgroud)

而rlMF看起来像这样:

public Thread rlMF = new Thread(new Runnable() {
    public void run() {
        reloadMissingFiles();
    }
});
Run Code Online (Sandbox Code Playgroud)

我尝试在onPause中使用rlMF.stop(),. interrupt(),. suspend.没有什么能阻止它.

Tom*_*ski 5

你必须添加一些标志来阻止它.通过其他方式停止线程可能会产生可怕的后果,例如资源泄漏.

例如:

volatile boolean activityStopped = false;
Run Code Online (Sandbox Code Playgroud)

创建runnable时:

public Thread rlMF = new Thread(new Runnable() { 

    public void run() {
        while (!activityStopped) {
        // reloadMissingFiles() should check the flag in reality
            reloadMissingFiles(); 
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在onPause()中:

protected void onPause(){
    super.onPause();
    activityStopped = true;
}
Run Code Online (Sandbox Code Playgroud)