此代码运行良好,没有崩溃,但是当我启动一个新的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();
}
}
答案 0 :(得分:0)
这是因为在使用MainActivity.this
的操作仍在进行时,您正在完成MainActivity。
确保在完成InitializeSQLCipher
之前不会调用click上的Button或onClick只是通过引入一些布尔变量来等待操作完成,或者可以组合使用Object.wait和Object.notify