仅创建一个服务实例(Android)

如何确保只创建一个服务实例?

我已经检查一些功能与日志(WeatherService是扩展服务的类):

Log.i(TAG, "Start  Id:" + WeatherService.this.hashCode());
Log.i(TAG, "End Id:" + WeatherService.this.hashCode());

它给出不同的哈希码,即使我确定相同的功能运行两次(下载):

09-12 01:00:55.195: INFO/WeatherService(7222): Start  Id:1137653208
09-12 01:00:57.235: INFO/WeatherService(7222): Start  Id:1137654296
09-12 01:00:59.035: INFO/WeatherService(7222): Start  Id:1138806536
09-12 01:01:39.085: INFO/WeatherService(7222): End Id:1137654296
09-12 01:01:39.265: INFO/WeatherService(7222): Start  Id:1137654296
09-12 01:02:22.175: INFO/WeatherService(7222): End Id:1137653208
09-12 01:02:24.815: INFO/WeatherService(7222): End Id:1138806536
09-12 01:02:24.836: INFO/WeatherService(7222): Start  Id:1138806536
09-12 01:02:40.275: INFO/WeatherService(7222): End Id:1137654296

我绑定一个活动到服务与:

bindService(new Intent(getApplicationContext(),  WeatherService.class)
                               ,mServiceConnection, BIND_AUTO_CREATE);

并且服务可以运行几分钟直到完成,因此该服务可以绑定到/由许多活动创建

How can I make sure that only one instance of Service is created?

只能有一个给定服务的一个实例。

It gives different hash codes even when I am sure that the same function is running twice (downloading).

然后这不是服务。或者,服务已被销毁并在日志之间重新创建。

And the service can run for minutes until it is completed, therefore the service can be binded to/created
by many Activities

然后服务可能被销毁和重新创建。如果需要服务运行几分钟,除了bindService()和unbindService()调用之外,还需要使用startService()和stopSelf()。或者,也许你不需要绑定,在这种情况下,你可以考虑使用IntentService,因为它自动给你一个后台线程来做你的下载。

http://stackoverflow.com/questions/3692915/create-only-one-instance-of-service-android

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:仅创建一个服务实例(Android)