我想在应用程序初始化时显示一些消息和进度条。Android setContentView被onCreate中的AsyncTask抑制
第一次运行我的应用程序时,我需要将一些字词词典插入到SQLite数据库中。要做到这一点,我有一个AsyncTask打开我的SQLiteOpenHelper并再次关闭它,只是这样数据库初始化完成一次。
private class AsyncDbInit extends AsyncTask<Void, Void, Void> {
private Context context;
private Intent intent;
public AsyncDbInit(Context context, Intent intent){
this.context = context;
this.intent = intent;
}
@Override
protected Void doInBackground(Void... params) {
DatabaseHandler db = new DatabaseHandler(this.context);
db.close();
return null;
}
@Override
protected void onPostExecute(Void param) {
context.startActivity(this.intent);
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... params) {}
}
此的AsyncTask被称为在我的onCreate()方法,但我也试图从在onStart()和的onResume()不更迭运行它。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dispatcher);
... //some code finding the right intent
new AsyncDbInit(this, nextIntent).execute();
}
不知何故,这最后一行,调用AsyncTask,阻止我的UI显示;在AsyncTask完成并且新活动启动之前,屏幕保持空白。 当我评论这条线时,UI显示得很好。
我唯一能想出的就是SQLiteOpenHelper以某种方式阻止了UiThread,但我无法找到任何相关信息。
我已经尝试了与线程池执行程序executeOnExecutor(),但它没有奏效。还是一样的UI冻结。 我现在用一个按钮启动AsyncTask。视图现在加载,但按下按钮后几秒钟,我的屏幕变黑,直到AsyncTask完成。 – Dasyel