Java 扩展IntentService类

Java 扩展IntentService类,java,android,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.currentTimeMil

我刚刚在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) {
              }
          }
      }
  }
@覆盖
受保护的手部内容无效(意图){
//通常我们会在这里做一些工作,比如下载一个文件。
//对于我们的示例,我们只需睡眠5秒钟。
long-endTime=System.currentTimeMillis()+5*1000;
while(System.currentTimeMillis()
我还读了以下论文:

  • 创建一个默认工作线程,该线程执行与应用程序主线程分离的所有交付到onStartCommand()的意图
  • 创建一个工作队列,该队列一次将一个意图传递给onHandleIntent()实现,因此您无需担心多线程问题
所以,如果IntentService使用工作线程,并且我不必担心多线程,那么为什么我需要在onHandleIntent(…)方法中使用同步块呢?多谢各位

所以,如果IntentService使用工作线程,并且我不必担心多线程,那么为什么我需要在onHandleIntent(…)方法中使用同步块呢

IntentService
有一个工作线程<在该线程上调用code>onHandleIntent()

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

如果您试图从工作线程和主应用程序线程使用对象,则需要通过某种方式同步它们的访问

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

所以,如果IntentService使用工作线程,并且我不必担心多线程,那么为什么我需要在onHandleIntent(…)方法中使用同步块呢

IntentService
有一个工作线程<在该线程上调用code>onHandleIntent()

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

如果您试图从工作线程和主应用程序线程使用对象,则需要通过某种方式同步它们的访问

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