【发布时间】:2014-05-21 00:38:36
【问题描述】:
我知道这个问题已被问过很多次,但我得到的所有答案都不清楚。
我想实现一个文件删除过程。我发现要完成这种工作,建议在一个单独的线程中运行所有进程。
为此,我可以使用AsyncTask、Handler 和Thread。 AsyncTask 似乎是一个很好的解决方案。然而,AsyncTask 是为小任务而设计的。 (当我尝试删除长度超过 1G 的文件时,AsyncTask 崩溃或不执行 onPostExecute。
其他线程处理程序(Thread、Runnable...)无法管理 UI(更新 UI 或显示进度)。
我的问题是什么是长任务的好线程处理程序以及如何使用它管理 UI。
【问题讨论】:
-
尝试后台服务,从服务中为长任务启动一个新线程,并使用广播接收器与其通信并更新主用户界面。
-
你的前提不正确。 AsyncTask 正是为您描述的情况而设计的。您没有包含有关您的崩溃的信息,但它是由其他问题引起的。将该问题移至线程不是解决方案。
标签: java android multithreading android-asynctask