【问题标题】:android threading - locking UI?android线程-锁定UI?
【发布时间】:2011-04-02 11:49:26
【问题描述】:

在我的应用程序中,我有一个用户可以登录的屏幕。登录详细信息被发送到网络,一些数据被下载到微调器中。我为应用程序实现了一个进度对话框,以便应用程序在访问网络和下载时不会锁定。进度对话框似乎工作正常,但任务完成后它似乎并没有更新我的微调器 - 我实际上必须单击微调器才能显示已下载的数据。 notifyDataSetChanged() 方法似乎不起作用,如果我没有任何线程,它通常会默认显示第一项。这是一些代码。

启动进度对话框的代码

    pd = ProgressDialog.show(this, "Logging in...", "Please wait", true, false);        Thread thread = new
 Thread(this); thread.start();

run 方法 - 在这里更改了微调器数据集

public void run() {
    myMethodThatDoesStuff();
    handler.sendEmptyMessage(0);
}

和处理程序

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        pd.dismiss();
    }
};

最后,myMethodThatDoesStuff 中更改微调器数据集的位

aa=new ArrayAdapter<String>(this,
                                android.R.layout.simple_spinner_item);
                        //ADDING SOME DATA HERE
//DATA ADDED
                        spin=(Spinner)findViewById(R.id.spinner);
                        spin.setOnItemSelectedListener(this);
                        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spin.setAdapter(aa);
                        aa.notifyDataSetChanged();

注意:没有线程这绝对可以正常工作

【问题讨论】:

    标签: android multithreading progress


    【解决方案1】:

    我建议使用 AsyncTask。

    private class CustomTask extends AsyncTask<Void, Void, Void> {
      protected onPreExecute() {
       pd = ProgressDialog.show(this, "Logging in...", "Please wait", true, false);     
      }
    
     protected Long doInBackground(Void... void) {
         doCalculation() ;
         ....    
     }
    
     protected void onPostExecute(Long result) {
         .....
         pd.dismiss();
         aa.notifyDataSetChanged();
     }
    

    }

    【讨论】:

    • 当我使用这个时,发生了完全相同的事情。
    【解决方案2】:

    您可以调用 pd.setVisibility(View.GONE) 在处理程序代码中隐藏微调器

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多