异步任务和处理程序Android

时间:2013-07-03 19:30:52

标签: android android-asynctask locationmanager android-handler

我有一段代码 list = geocoder.getFromLocation( locationNetwork.getLatitude(), locationNetwork.getLongitude(), 3); 我试图通过getFromLocation(LocationManager)检索最后一个位置。因为这需要时间,我想把它放在与UI不同的线程上。但我很困惑应该使用什么。应该使用处理程序或异步任务来实现此目的。我很困惑,因为在Android中应该使用处理程序和异步任务。任何人都可以用一些例子解释我的情景...... 谢谢!

2 个答案:

答案 0 :(得分:3)

我觉得你在这里混淆了。处理程序和异步任务是两回事。处理程序用于在线程see here之间进行通信,而Async任务基本上是Android中更易于使用的线程。如果您创建新线程并希望与另一个线程通信,则必须使用Handler。但是,Google通过提供Async任务类使其变得更容易,该任务类允许与主UI线程进行通信,而无需使用处理程序see here。简而言之,为您的目的使用异步任务。我提供的链接实际上提供了一个示例用法,并深入介绍了Asyncs。如果您需要澄清,请告诉我。

答案 1 :(得分:0)

See this SO answer它谈到了AsyncTaskHandlerThread

的区别

如果您正在讨论创建Thread,那么大部分时间都是开发者偏好。如果您需要更新UI,尤其是在后台Thread正在运行时,那么我认为AsyncTask更容易。它们都允许您在后台进行较重的提升时继续使用UI

您可以使用AsyncTask并在doInBackground()中完成工作,然后在任何其他UI方法上更新AsyncTask。如果您可能希望在多个位置使用此Thread,请将其设为单独的文件,如果需要,可以通过其构造函数将Activity Context传递给它。如果您只在一个Activity中使用它,那么您可以将其设为Activity的内部类,然后它就可以访问Activity

的所有成员变量