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

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

因此,当使用函数“setUpDB”设置数据库时,我使用此代码显示消息“正在安装...”,然后在数据库函数完成后将其删除。这在 Gingerbread 和 honeycomb 中工作正常,但会导致应用程序在 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);
    }
}

最佳答案

你为什么不尝试使用 Asynctask,我认为这是处理你的情况的最合适的方法。

关于android - 预加载 progressDialog 使我的应用程序仅在 ICS 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11032436/

相关文章:

android - 如何将TextView背景颜色更改为初始值

android - 连接到WLAN网络时Android崩溃

ios - 了解 iOS 崩溃日志

Android 操作栏 : click Up-Button programmatically

android - 如何检测 "Recent Apps"系统按钮点击(Honeycomb+)

java - 使用兼容性时从 Activity 中获取 FragmentTransaction 的问题

java - setText 未在 Runnable 中更新

pandas - 查询带有Period数据类型的数据帧时Jupyter内核崩溃

android - 如何打开 android 内置的下载应用程序?

php - 在 Rest Client (Codeigniter) 中发送邮件