내 주요 활동은 초기 작업을 수행하고 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();
문제는 사용자가 '뒤로'버튼을 클릭하면 그 응용 프로그램을 종료한다는 것입니다,하지만이 스레드는 여전히 백그라운드에서 실행됩니다. 어쨌든 일은 끝났지 만,이 스레드가 끝나기 전에 다시 응용 프로그램을 시작하면 모든 것이 엉망이됩니다. 데이터베이스의 데이터가 곱해집니다. 이 스레드를 어떻게 죽일 수 있습니까? 스레드를 중단 thread.interrupt()
하지만처럼 중단 될 수있는 상태에있는 스레드 필수 :
조금 해킹 된 것처럼 보였지만 효과가있었습니다. – gisek