android - AsyncTask 可以从后台线程执行吗?
问题描述
在阅读文档时,我发现必须在 UI 线程上加载 AsyncTask 类。但令我惊讶的是 AsyncTask 也可以从工作线程执行。
所以问题是:
如果 AsyncTask 也可以从后台线程执行,为什么在文档中他们说的正好相反。
怎么可能在 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();
解决方案
AsyncTask Android 类允许我们将后台任务绑定到 UI 线程。因此使用这个类,您可以执行后台操作,然后将结果发布到更新 UI 组件的 UI 线程。
您可以简要了解 AsyncTask 的执行:http: //codetheory.in/android-asynctask/
推荐阅读
- c# - 如何在不冻结 UI 的情况下从代码隐藏 (C#) 编辑 WPF UI 中的网格?
- c++ - Qt:相当于 utf-8 字符的 getch()
- java - 当任何任何参数用于方法时,Mockito 存根返回 null
- android - Android Kotlin:在 DAO 中使用“暂停”时出错 - 遵循 CodeLabs 指南
- python - 在 python (pandas) 中展开数据框中的列
- html - CSS 覆盖 !important
- eclipse - 如何以编程方式加载具有跨项目依赖关系的 Xtext 项目
- python - 我应该如何打开作为 Ui 的 python 文件
- c# - SQL Query 不能使用别名,但可以使用索引
- bash - 使用 bash 将文件输出到数组中