我只是想知道如果同时向同一个服务发送两个服务意图,是否会有任何冲突。我的代码如下:
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实例。然后,这两个意图会导致服务代码按顺序运行,如下面的工作流程吗?
两个意图是否会导致服务代码(即onStart())同时运行?我是否需要在onStart()方法定义中放置synchronized?
感谢。
答案 0 :(得分:1)
两个意图是否会导致 服务代码,即onStart(),运行 同时?
没有。 Service
已在主应用程序线程上调用onStart()
,并且只有其中一个。因此,两个Intents
将按顺序递送。当然,哪一个是第一个是不确定的。
IntentService
会更简单,因为已经为你处理了后台线程 - 你在onHandleIntent()
中实现的任何东西都没有在主应用程序线程上执行。