簡體   English   中英

android中的線程(開始活動時)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM