创建ProgressDialog以进行加载

时间:2012-03-20 14:31:24

标签: android progressdialog

我有这个site.

的片段
final ProgressDialog dialog = ProgressDialog.show(this, "Title", 
"Message", true);
final Handler handler = new Handler() {
   public void handleMessage(Message msg) {
      dialog.dismiss();
      }
   };
Thread checkUpdate = new Thread() {  
   public void run() {
//
// YOUR LONG CALCULATION (OR OTHER) GOES HERE
//
      handler.sendEmptyMessage(0);
      }
   };
checkUpdate.start();

我不完全理解它是如何完全有效的,除了它为ProcessDialog创建一个新线程以便在进程完成之前运行。

我假设我当然纠正了我,如果我错了,这会创建一个新线程,使现有线程仍在运行,这将导致.xml项目的空值。

我的问题是

  

如何在不进入null的情况下运行此代码   指针异常?

     

是否有其他替代方案可以做类似的事情   此?

1 个答案:

答案 0 :(得分:0)

更优雅和首选的方法是使用AsyncTask

private class DownloadTask extends AsyncTask<Object, Object, Object>
    {
        @Override
        protected Object doInBackground(final Object... urls)
        {
           // long calculation

            return null;
        }

        @Override
        protected void onPostExecute(final Object result)
        {
            closeDialog();
        }

        @Override
        protected void onPreExecute()
        {
            showDialog();
        }
    }

private void closeDialog()
    {
        if (dialog != null)
        {
            dialog.dismiss();
        }
    }

    private void showDialog()
    {
        if (dialog !=null && !dialog.isShowing())
        {
            dialog = new ProgressDialog(this);
            dialog.setMessage("Loading. Please wait...");
            dialog.show();

        }

    }

用这一行称呼它:

new DownloadTask().execute();
相关问题