由于对同一服务的两个服务意图可能会发生冲突吗?

时间:2010-03-30 23:12:34

标签: android

我只是想知道如果同时向同一个服务发送两个服务意图,是否会有任何冲突。我的代码如下:

public static class UpdateService extends Service {

    @Override
    public void onStart(Intent intent, int startId) {
        int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

        UpdateThread updateThread = new UpdateThread();
        updateThread.mWidgetId = widgetId;
        updateThread.mContext = this;

        updateThread.start();

        stopSelf();
    }
}

假设UpdateService同时有两个意图,意图1和意图2。据我了解,只有一个UpdateService实例。然后,这两个意图会导致服务代码按顺序运行,如下面的工作流程吗?

  1. 对于意图1,启动UpdateService,即调用onStart()。
  2. UpdateService因为在onStart()中调用了stopSelf()而停止。
  3. 对于意图2,启动UpdateService,即调用onStart()。
  4. UpdateService因为在onStart()中调用了stopSelf()而停止。
  5. 两个意图是否会导致服务代码(即onStart())同时运行?我是否需要在onStart()方法定义中放置synchronized?

    感谢。

1 个答案:

答案 0 :(得分:1)

  

两个意图是否会导致   服务代码,即onStart(),运行   同时?

没有。 Service已在主应用程序线程上调用onStart(),并且只有其中一个。因此,两个Intents将按顺序递送。当然,哪一个是第一个是不确定的。

顺便说一句,如果扩展IntentService会更简单,因为已经为你处理了后台线程 - 你在onHandleIntent()中实现的任何东西都没有在主应用程序线程上执行。