所以我使用此代码显示消息“正在安装...”,同时使用函数'setUpDB'设置数据库,然后在数据库函数完成时删除。这在姜饼和蜂窝中工作正常,但导致应用程序在ICS中崩溃
final ProgressDialog pd=ProgressDialog.show(this,"","Installing...");
final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
if(msg.what==0)
{
pd.dismiss();
}
}
};
//have subcategory heading???
Thread thread = new Thread()
{
@Override
public void run() {
setUpDB();
handler.sendEmptyMessage(0);
}
};
thread.start();
在不解除消息的情况下,应用程序将继续在ICS中运行(但您无法执行任何操作),如果用户在完成设置之前执行任何访问数据库的操作,则不显示消息,它将崩溃(因此我需要安装消息的原因)..
好的,这是使用AsyncTask的代码
final ProgressDialog pd=ProgressDialog.show(this,"","Installing...");
final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
if(msg.what==0)
{
pd.dismiss();
}
}
};
new databaseInstallTask().execute(handler);
和
private class databaseInstallTask extends AsyncTask<Handler, Void, Handler>
{
@Override
protected Handler doInBackground(Handler... params) {
setUpDB();
return params[0];
}
protected void onPostExecute(Handler handler) {
handler.sendEmptyMessage(0);
}
}
答案 0 :(得分:2)
为什么不尝试使用Asynctask
,我认为这是处理案件的最合适方式。