[英]Thread in android(on starting an activity)
這段代碼運行良好,沒有崩潰,但是當我啟動一個新的Activity時,僅顯示logcat中沒有詳細信息的MainAvtivity崩潰(應用程序已終止):
Thread t2 = new Thread() {
@Override
public void run() {
try {
sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
InitializeSQLCipher();
}
}
};
t2.start();
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Info_Activity.class));
finish();
}
});
和InitializeSQLCipher方法:
private void InitializeSQLCipher() {
SQLiteDatabase.loadLibs(MainActivity.this);
try {
desPath = Environment.getExternalStorageDirectory() + "/Android/data/ir.plant.vision2";
file = new File(desPath);
if (!file.exists()) {
file.mkdirs();
file.createNewFile();
copyDB(MainActivity.this.getAssets().open("data"), new FileOutputStream(desPath + "/data"));
}
} catch (FileNotFoundException f) {
f.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
}
這是因為您正在完成MainActivity,而利用MainActivity.this
的操作仍在進行。
確保在完成InitializeSQLCipher
之前不會調用click上的Button或onClick只是通過引入一些布爾變量來等待操作完成,或者可以組合Object.wait和Object.notify
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.