Joh*_* Au 53 android google-maps android-asynctask intentservice
我一直在阅读与Android的互联网连接,并注意到有不同的方法来处理这个AsyncTask和IntentService.但是,我仍然不确定使用哪一个.我的应用程序基本上是一个位置/路径查找器与谷歌地图.我的互联网连接将用于查找地图某个半径范围内最近的路径.因此,每次用户将地图移动或滑动到新位置时,它都会使用最近的路径进行更新.它还将添加新的路径,并允许用户对路径进行评级.
是否AsyncTask足够或我应该使用IntentService?
Dee*_*eeV 56
它们可以用于不同目的.
AsyncTask是一个方便的线程实用程序,如果您需要经常告诉用户某些东西或定期在主线程上执行操作,可以使用它.它提供了大量的细粒度控制,并且因为它的性质很容易使用,Activity而IntentService通常需要使用BroadcastReceiver或IBinder框架.
IntentService可以非常像一个AsyncTask,但它的目的是用于后台下载,上传或其他不需要用户交互或主线程的阻止操作.例如,如果要下载和缓存地图,您可能需要调用,IntentService以便用户无需查看应用程序即可下载.同样,如果您要将数据发送到服务器,那么IntentService在这方面非常有帮助,因为您可以开始忘记.例如,用户可以在您的应用中键入注释,然后按"发送"."发送"将启动IntentService获取注释并在后台线程上将其发送到您的服务器.用户可以按"发送",并立即离开应用程序和注释会,最终还是到达您的服务器(假定没有当然的错误).如果你有这样做AsyncTask在你的Activity,另一方面,该系统可以杀死你的进程在交换中,它可能有或可能不会去.
一般来说,它们都不适用于长期运行的应用程序.它们意味着短暂的一次性操作.它们可以用于永久性或长期运行,但不建议这样做.
eba*_*hea 48
您应该使用AsyncTask与活动紧密绑定的简短重复性任务,就像您当前尝试的那样.IntentService更适合应该在后台运行的计划任务(重复或不重复),与您的活动无关.
Joe*_*lin 21
AsyncTask不能很好地配置更改或重新启动Activity的其他事情.
IntentService适用于应始终可用的内容,无论执行其工作所需的时间长短.在大多数情况下,我更喜欢IntentService,因为AsyncTask更依赖于Activity状态.
一些说明:
在尝试更新位置之前,请不要忘记检查连接.
AsyncTasks与Activity绑定非常紧密,如果您离开创建AsyncTask的Activity,通常会导致泄露的窗口错误.但它们非常适合显示ProgressBar,因为您可以快速更新进度百分比.
IntentServices更清洁,更安全.当你是初学Android开发人员时,它们更难实现,但是一旦你学会了如何启动它们并处理它们,你可能永远不会回到AsyncTasks!
IntentServices还允许在您的应用程序中实现更加模块化的设计.我通常为我的所有IntentServices创建一个单独的类,但对于AsyncTasks,我将它们创建为Activity内部类.如果我要从Activity中分离出AsyncTask,我将不得不传入AsyncTask构造函数中的Activity Context和View对象,这可能很麻烦.
如上所述AsyncTask将解决您的问题.
但请记住,这AsyncTask有一个重要的缺点:它不能很好地处理Activity
"刷新"(例如在旋转期间).如果用户在AsyncTask仍在装载物品时旋转手机,则可能会出现问题 .如果这确实是你的问题,我建议AsyncTaskLoader:
http://developer.android.com/reference/android/content/AsyncTaskLoader.html
| 归档时间: |
|
| 查看次数: |
27607 次 |
| 最近记录: |