扩展IntentService类

时间:2012-03-27 15:00:26

标签: java android

我刚刚在官方Android网站上找到以下代码:

  @Override
  protected void onHandleIntent(Intent intent) {
      // Normally we would do some work here, like download a file.
      // For our sample, we just sleep for 5 seconds.
      long endTime = System.currentTimeMillis() + 5*1000;
      while (System.currentTimeMillis() < endTime) {
          synchronized (this) {
              try {
                  wait(endTime - System.currentTimeMillis());
              } catch (Exception e) {
              }
          }
      }
  }

我还阅读了以下论文:

  • 创建一个默认的工作线程,该线程执行与应用程序主线程分开的传递给onStartCommand()的所有意图。
  • 创建一个工作队列,一次将一个意图传递给onHandleIntent()实现,因此您不必担心多线程。

因此,如果IntentService使用工作线程并且我不必担心多线程,那么为什么我需要在onHandleIntent(...)方法中使用synchronize块?谢谢。

1 个答案:

答案 0 :(得分:1)

  

因此,如果IntentService使用工作线程并且我不必担心多线程,那么为什么我需要在onHandleIntent(...)方法中使用synchronize块?

IntentService 工作线程。在该线程上调用onHandleIntent()

但是,在主应用程序线程上调用生命周期方法(onCreate()onStartCommand()onBind()onDestroy()等。

如果您尝试使用工作线程和主应用程序线程中的对象,则需要通过一种或另一种方式同步其访问权限。

顺便说一下,你引用的代码示例很奇怪,我不知道Google为什么要使用它。如果您需要睡觉(在生产应用中不常见),请使用SystemClock.sleep()