gpt4 book ai didi

android - 应用程序停止后线程仍在运行

转载 作者:行者123 更新时间:2023-11-29 22:11:34 25 4
gpt4 key购买 nike

我的主要 Activity 执行一些初始操作,然后启动 InitDBActivity。这个应该检查我的数据库是否是最新的,并在必要时更新它。以下是在 InitDBActivity 的 onCreate 方法中完成的。

Thread asyncDBCreation = new Thread(new Runnable() {
public void run() {

SQLiteDatabase db = null;
try{
db = dbh.getWritableDatabase();
}catch(Exception ex){
return;
}

if(dbh.recreateDB(db)){
try{
dbh.insertQueries(dbh.getQueries(getAssets()),db);
}catch(Exception ex){
dbh.close();
finish();
return;
}
dbh.close();

prefEdit.putLong(dbVersion, dbFileVersion);
prefEdit.commit();

startActivity(intent);
finish();
}
else{
}
}
});
asyncDBCreation.start();

问题在于,如果用户单击“后退”按钮,他将退出应用程序,但该线程仍在后台运行。没关系 - 工作无论如何都会消失,但是......事实证明,如果他在这个线程完成之前再次启动应用程序 - 一切都会搞砸。数据库中的数据成倍增加。我怎样才能终止这个线程?

最佳答案

在java中,没有方法可以杀死线程,只能中断线程,可以使用方法:thread.interrupt()来中断线程,但是线程必须处于可以被中断的状态,如: sleep ,或等待。

所以,这里可以使用db.close方法关闭数据库,数据查询工作会抛出异常,可以捕获异常完成线程工作。

关于android - 应用程序停止后线程仍在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com