私のアプリの最初の実行では、データベース ファイルをデータ フォルダーにコピーする必要があります。約 10 秒かかり、その間、ユーザーには黒い画面が表示されます。AsynTask 手法を使用してプログレスバーを表示したいと考えています。しかし、黒い画面が消えた後にプログレスバーが表示されて機能しません...
このコードを使用して、コピー データベース クラスを呼び出し、また AsynTsk プロセスを呼び出します...
new asyn().execute();
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
// throw new Error("Unable to create database");
}
これは私の AsynTask コードです:
public class asyn extends AsyncTask<String, Integer, String> {
ProgressDialog dialog;
@Override
protected void onPreExecute()
{
//loading toast
//final DataBaseHelper myDbHelper = new DataBaseHelper(this);
String firstload2 = myDbHelper.getfirstload();
if(firstload2.matches("1")) {
dialog=new ProgressDialog(DictionaryActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.show();
myDbHelper.changefirstload();
}
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
// perform desired task in this doInBackground Block.
for(int i=0;i<20;i++)
{
publishProgress(5);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "";
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
dialog.incrementProgressBy(5);
}
@Override
protected void onPostExecute(String result)
{
dialog.dismiss();
AlertDialog.Builder a=new Builder(DictionaryActivity.this);
a.setMessage("Successfully Done");
a.setTitle("Try");
a.setPositiveButton("OK",null);
a.show();
}
}
私のせいはどこですか?どうすればそれを修正できますか?