【问题标题】:Android AsyncTask: async-task for each viewpager fragmentAndroid AsyncTask:每个viewpager片段的异步任务
【发布时间】:2013-08-07 04:49:35
【问题描述】:

我有viewpagerFragmentStatePagerAdapter。我在Fragment中使用了AsyncTask,因为Fragment中有计算过程。这些片段将从FragmentStatePagerAdapter 加载。这是片段中的快照代码..

public void refreshView() {
        if(asynTask == null) {
            asynTask = new SetupTableTask();
        }
        asynTask.execute();
    }

    private class SetupTableTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... arg0) {
            setupInitialValue();
            dashboradView.removeAllViews();
            setupTableRow();
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            progressDialog.dismiss();
        }

        @Override
        protected void onPreExecute() {
            progressDialog = ProgressDialog.show(getActivity(), "Dashboard",
                    " Loading...", true, false);
        }
    }

问题是当我快速滑动 4 或 5 页时。我遇到了这个异常。

08-07 10:48:36.366: E/AndroidRuntime(5702): FATAL EXCEPTION: AsyncTask #2
08-07 10:48:36.366: E/AndroidRuntime(5702): java.lang.RuntimeException: An error occured while executing doInBackground()
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at java.lang.Thread.run(Thread.java:856)
08-07 10:48:36.366: E/AndroidRuntime(5702): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.view.View.requestLayout(View.java:15129)
08-07 10:48:36.366: E/AndroidRuntime(5702):     at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)

我想知道我可以在 ViewPager 的片段中使用 AsyncTask。有什么想法可以克服这个例外吗?我已经尝试过Handler。我遇到了与CalledFromWrongThreadException 相同的异常。

谢谢

【问题讨论】:

    标签: android android-asynctask android-viewpager android-handler


    【解决方案1】:

    您不能在AsyncTask doInBackground 中绑定或删除任何类型的View 喜欢

      dashboradView.removeAllViews();
    

    doInBackground 中删除它 并输入onPostExecute,在这里你可以绑定你的视图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多