首页 > 解决方案 > AsyncTask 可以从后台线程执行吗?

问题描述

在阅读文档时,我发现必须在 UI 线程上加载 AsyncTask 类。但令我惊讶的是 AsyncTask 也可以从工作线程执行。

所以问题是:

  1. 如果 AsyncTask 也可以从后台线程执行,为什么在文档中他们说的正好相反。

  2. 怎么可能在 onPostExecute 上有上下文?

    new Thread(new Runnable() {
        @Override
        public void run() {
            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... voids) {
                    return null;
                }
    
                @Override
                protected void onPostExecute(Void aVoid) {
                    super.onPostExecute(aVoid);
                    Toast.makeText(getBaseContext(), "in AsyncTask...", Toast.LENGTH_SHORT).show();
                }
            }.execute();
        }
    }).start();
    

标签: androidandroid-asynctask

解决方案


AsyncTask Android 类允许我们将后台任务绑定到 UI 线程。因此使用这个类,您可以执行后台操作,然后将结果发布到更新 UI 组件的 UI 线程。

您可以简要了解 AsyncTask 的执行:http: //codetheory.in/android-asynctask/


推荐阅读