android - 在暂停时停止线程

标签 android android-intent

我想在用户离开 Activity 时停止线程。听起来很简单,但没有任何功能,我试过,有效。

我用代码启动 Activity

lovi = new Intent(getApplicationContext(), listoverview.class);
lovi.putExtra("reloadAll", true);
startActivity(lovi);

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

rlMF.start();

rlmF 看起来像这样:

public Thread rlMF = new Thread(new Runnable() {
    public void run() {
        reloadMissingFiles();
    }
});

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

最佳答案

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

例如:

volatile boolean activityStopped = false;

创建runnable时:

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

    public void run() {
        while (!activityStopped) {
        // reloadMissingFiles() should check the flag in reality
            reloadMissingFiles(); 
        }
    }
});

在 onPause() 中:

protected void onPause(){
    super.onPause();
    activityStopped = true;
}

关于android - 在暂停时停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11408453/

相关文章:

java - SharedPreferences 在检索值时返回 null

c# - Restful wcf 服务返回 json 中的数据行 - android 客户端

android - 未调用滑动时的 tabLayout.setOnTabSelectedListener

java - 如何将剪贴板中的文本发送到EditText框

android - 将第 3 方 Android JAR 集成到 Titanium Mobile 应用程序中?

android - 仅当文件在android Activity 中修改时如何下载文件

Android : Databinding, notifyPropertyChanged() 不工作?

android - 当通过 Intent 传递字符串时,在下一个 Activity 中获取字符串值时,只有一个不为空

安卓:改变屏幕

android - 在 android 中发送短信作为服务