android中的线程(开始活动时)

时间:2018-08-28 15:57:31

标签: java android multithreading

此代码运行良好,没有崩溃,但是当我启动一个新的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();
    }

}

1 个答案:

答案 0 :(得分:0)

这是因为在使用MainActivity.this的操作仍在进行时,您正在完成MainActivity。

确保在完成InitializeSQLCipher之前不会调用click上的Button或onClick只是通过引入一些布尔变量来等待操作完成,或者可以组合使用Object.wait和Object.notify