java片段vs AsyncTask vs IntentService vs Longrunning操作
我有以下设计:
Activity/FragmentA在用户操作后启动异步任务以获取一组数据
AsyncTask运行时,会向用户显示一个进度指示器
当AsyncTask完成任务并获取结果集时,它会将其保存在作为共享数据模型的单例类中
当FragmentA被通知AsyncTask已完成(LocalBroadcastReceiver)时,它会启动ActivityB/FragmentB
,从共享单例中获取结果集,并在列表视图中显示它们
这是可行的,但因为我是安卓的新手,所以我正在努力理解和学习最佳实践
例如,我看到从关闭进度条到显示ActivityB/FragmentB的UI之间有一个小的延迟(在此延迟期间,ActivityA/FragmentA的UI仍然可见)
我还认为,如果从FragmentB而不是FragmentA获取项目,会使FragmentB“自治”
总的来说,有人能帮我理解我如何在安卓系统中使用更好的/标准的实践来实现这一点,以及每种方法的优缺点吗
# 1 楼答案
片段
片段是活动的一小部分,它有自己的生命周期,这为开发人员处理UI提供了更大的灵活性。片段与后台进程无关
现在你的主要问题是关于背景过程
异步任务
这只是一个更好的线程版本,带有一些预定义的回调,当你需要执行一些不超过20秒的网络操作时,然后刷新UI,最好使用AsycntTask。不要使用服务(避免复杂性,保持简单)。你也可以使用一些第三方库
IntentService
现在IntentService是更好的服务版本,IntentService的主要目的是避免在主线程上执行长时间运行的操作,并为开发人员提供排队系统。如果在运行长时间运行的操作时不需要用户交互,则应使用服务(例如每天结束时将应用程序与服务器同步)
所以作为结论