2013-01-01 38 views
0

在我的應用程序的第一次運行中,我必須將數據庫文件複製到數據文件夾。大約需要10秒,在這段時間內用戶會看到黑屏。我想使用AsynTask技術向用戶顯示Toast。數據庫正在複製時顯示烤麪包

與此代碼我調用拷貝數據庫類,也叫我處理AsynTsk ...

new asyn().execute(); 
    try { 
     myDbHelper.createDataBase(); 
    }catch (IOException ioe){ 
     // throw new Error("Unable to create database"); 
    } 

,這是我AsynTask代碼:

public class asyn extends AsyncTask<Void, Void, Void> { 


    @Override 
    protected Void doInBackground(Void... params) { 
     return null; 
    } 

    protected void onPreExecute(Void parmas2) { 
     Context cntx = getApplicationContext(); 
     Toast toast = Toast.makeText(cntx, "aaaaaaaaaaa",Toast.LENGTH_SHORT); 
     toast.show(); 
    } 

    protected void onPostExecute(Void parmas3) { 

    } 

} 

哪裏是我的錯嗎?我該如何解決這個問題?我想在數據庫複製過程中顯示敬酒。

+0

你看到了什麼錯誤?問題是什麼? – marcinj

回答

3

如果我的理解是createDataBase是需要10秒鐘,然後部分,

你應該將

try { 
    myDbHelper.createDataBase(); 
} catch (IOException ioe) { 
    // throw new Error("Unable to create database"); 
} 

到的AsyncTask的doInBackground方法。

AsyncTask的工作原理是在單獨的線程中調用doInBackground,但在Ui線程上調用其他方法(onPreExecute等)。如果您希望顯示吐司並且不會在創建數據庫時阻塞Ui線程,則需要將繁重的工作放入doInBackground

相關問題