Runnable或Intent服务

时间:2013-05-26 11:49:06

标签: android runnable intentservice

我已经阅读了几篇关于android中后台进程的文章。 但我的情况是后台操作需要30秒以上;例如:

  • 开始活动
  • 点击按钮
  • 为某些数据创建可运行的呼叫服务器
    30秒(请稍候留言)
  • 完成,向处理程序发送消息
  • 屏幕方向发生在30秒的中间......

我知道活动被破坏并重新创建(内部的线程也被破坏了(使其成为静态的,因为潜在的内存泄漏而处理)。
   所以,我需要再次创建runnable和call server ....

我读到了关于intentService的内容,我知道intentservice生命周期与应用程序的生命周期相同,所以我假设我需要使用它?

downloading/parsing/insertingdb(交易)的30秒之间处理屏幕方向的最佳做法是什么? - >我不想使用onConfigurationChanged()方法。

您对这类问题的解决方案是什么?

日Thnx。

3 个答案:

答案 0 :(得分:1)

我建议您实施application object,而不是将后台操作与活动相关联。可以只有与任何特定应用程序关联的应用程序对象,它可以在任何Activity对象之前创建,并且独立于在应用程序生命周期内创建/销毁的任何活动对象。我有一个应用程序,我将所有活动对象都注册到我的应用程序对象。如果您执行类似的操作,那么由于配置更改而导致任何特定活动被销毁和重新创建都无关紧要。

答案 1 :(得分:0)

你可以使用Service来实现这一点,但在我看来,更好的解决方案是使用静态Model类,它将由执行工作的静态处理程序更新。当方向发生时,活动可能会死亡,但不会死亡。顺便说一下,你可以将这些行添加到清单中,你的活动也不会消亡:

<activity
        android:label="@string/app_name"
        android:name=".Counter_demoActivity"
        android:configChanges="keyboardHidden|orientation|keyboard" >

但是如果你没有并且你的活动正在消亡并重新启动,你可以通过阅读静态模型类来更新你的状态

答案 2 :(得分:0)

JobScheduler(minSdkVersion = 21 +)是runnable或Intent Service的强大替代品。它内置了重试逻辑,不受Android O中服务的后台限制。