我有一段代码
list = geocoder.getFromLocation(
locationNetwork.getLatitude(),
locationNetwork.getLongitude(), 3);
我试图通过getFromLocation(LocationManager)检索最后一个位置。因为这需要时间,我想把它放在与UI不同的线程上。但我很困惑应该使用什么。应该使用处理程序或异步任务来实现此目的。我很困惑,因为在Android中应该使用处理程序和异步任务。任何人都可以用一些例子解释我的情景......
谢谢!
答案 0 :(得分:3)
我觉得你在这里混淆了。处理程序和异步任务是两回事。处理程序用于在线程see here之间进行通信,而Async任务基本上是Android中更易于使用的线程。如果您创建新线程并希望与另一个线程通信,则必须使用Handler。但是,Google通过提供Async任务类使其变得更容易,该任务类允许与主UI线程进行通信,而无需使用处理程序see here。简而言之,为您的目的使用异步任务。我提供的链接实际上提供了一个示例用法,并深入介绍了Asyncs。如果您需要澄清,请告诉我。
答案 1 :(得分:0)
See this SO answer它谈到了AsyncTask
,Handler
和Thread
如果您正在讨论创建Thread
,那么大部分时间都是开发者偏好。如果您需要更新UI
,尤其是在后台Thread
正在运行时,那么我认为AsyncTask
更容易。它们都允许您在后台进行较重的提升时继续使用UI
。
您可以使用AsyncTask
并在doInBackground()
中完成工作,然后在任何其他UI
方法上更新AsyncTask
。如果您可能希望在多个位置使用此Thread
,请将其设为单独的文件,如果需要,可以通过其构造函数将Activity Context
传递给它。如果您只在一个Activity
中使用它,那么您可以将其设为Activity
的内部类,然后它就可以访问Activity