android - AsyncTask 在 doInBackground 中崩溃,添加到 listview

标签 android multithreading listview crash android-asynctask

当我尝试在后台运行函数 doTask() 时出现崩溃。我正在尝试使用 new Thread(new Runnable() {}) 并且它仅适用于此部分: handlerForBar.post(new Runnable() {public void run() { doTask(); } }) 但是 progressBar 在 doTask() 的工作完成时出现。所以我认为 AsyncTask 可以工作,但它崩溃了。

  public void doTask() 
                {

                ListView listView = (ListView)findViewById(R.id.list);

                myArray = new ArrayList<HashMap<String,Object>>();
                HashMap<String, Object> hash_map;

                hash_map = new HashMap<String, Object>();
                hash_map.put(NICK_KEY, "nick");

                myArray.add(hash_map);
                listView.setAdapter(new myListAdapter(myArray,this));
                new myListAdapter(myArray,this).notifyDataSetChanged();
                }



private class myThread extends AsyncTask<String, Void, String> {

          @Override
          protected String doInBackground(String... params) {

              doTask(); //try, catch also FC
            return null;
          }

          ...
         }

*.java的结构:

> public class mainActivity extends Activity{}
>                       public void onCreate()
>                                  new myThread().execute("");    
>                       public void doTask()
>                       private class myThread extends AsyncTask<String, Void, String>{}
>                                  protected String doInBackground()
>                                                   doTask()
>                       private class myListView extends BaseAdapter

最佳答案

您不能在doInBackground 中触摸UI,您必须在onProgressUpdateonPostExecute 等方法中更新UI。参见 here

关于android - AsyncTask 在 doInBackground 中崩溃,添加到 listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422631/

相关文章:

android - 从 phoneBook 我怎样才能在 android 应用程序中获取联系电话和照片

c# - 为什么在调用的方法中使用 ThreadStaticAttribute 字段而不是局部变量?

android - ListView Adapter 为单个点击事件同时在多行上执行 onclick 方法

android - 如果没有结果,如何清理过滤后的 ListView

c# - 以编程方式更改 ListView 行的背景颜色(wpf)

java - onClickListener 导致强制关闭

android - 如何检测android设备麦克风中的打击

android - asmack/Smack 4.1 在 android 上设置

java - 寻找基于ThreadPoolExecutor的解决方案以确保顺序执行任务

c# - 为什么 .Net 没有 Thread.Start() 的通用版本?