android 活动与intentservice数据传输,android设计注意事项:AsyncTask与服务(IntentService?)...

您必须权衡多种考虑因素,才能最好地决定如何处理您的情况。 听起来您需要在这两种方法之间进行良好的比较...因此,这里列出了在使用手持式设备工作时必须考虑的相似性,差异和其他注意事项。

服务是没有UI的应用程序的一部分。 它可以由要启动的UI(Activity)调用,也可以由应用程序的任何其他组件启动。 在开发时,您可以将其放置在不同的线程上,甚至可以在不同的Task或Process中运行。 这使您最终可以将其与UI分开。 另外,您可以根据需要将服务启动为独立运行(startService)或将活动绑定到该服务(bindService)。 通过使用自定义处理程序,您可以设置回调以根据进度更新UI。 如果用户更改了活动,则服务不一定会终止,而是可由操作系统随时终止。

总是从UI线程实例化AsyncTask。 它仅允许特定的回调,但出于相对短的事务(与专用的单独线程服务相比)的目的,简化了多线程的过程,该事务固有地与活动执行的操作相关。 每当用户更改“活动”时,AsyncTask就会处于“暂停”状态,甚至可能会死,因为不再有活动的UI线程。

我最担心的事情是,如果该应用第一次使用10-20分钟,我会假设用户将暂时更改任务或将手机放下直到完成(这可能导致所有 如果手机进入休眠状态,也会出现相同的并发症)。 考虑到这一点,绑定到您的活动的线程服务可能是您的最佳选择。 为了保护您的UI,我将为您的Activity创建一个Progress对话框,以接收您的进度回调。 这限制了用户在您的应用程序中的输入,并允许您的服务继续其所需的方式。 然后覆盖Activity onResume以检查服务的状态以及它是否正在运行。 然后,您可以立即重置对话框。

鉴于这是我的首选方法,因此我还要考虑到OS随时可能会终止该应用程序。 因此,请确保采用某种方法来检测不完整或部分同步。 然后,当“活动”或“服务”重新启动时,您可能会自动恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值