预加载progressDialog使我的应用程序仅在ICS中崩溃

时间:2012-06-14 11:48:09

标签: android crash android-4.0-ice-cream-sandwich preload

所以我使用此代码显示消息“正在安装...”,同时使用函数'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);
    }
}

1 个答案:

答案 0 :(得分:2)

为什么不尝试使用Asynctask,我认为这是处理案件的最合适方式。