Tor*_* Bø 33 android android-service
如何确保只创建一个Service实例?
我已经使用日志记录检查了一些函数(WeatherService是扩展Service的类):
Log.i(TAG, "Start Id:" + WeatherService.this.hashCode());
Log.i(TAG, "End Id:" + WeatherService.this.hashCode());
Run Code Online (Sandbox Code Playgroud)
即使我确定相同的函数运行两次(下载),它也会提供不同的哈希码:
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
Run Code Online (Sandbox Code Playgroud)
我将Activity绑定到服务:
bindService(new Intent(getApplicationContext(), WeatherService.class)
,mServiceConnection, BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
并且该服务可以运行几分钟直到完成,因此该服务可以被许多活动绑定/创建
Com*_*are 31
如何确保只创建一个Service实例?
只能有一个给定的实例Service.
即使我确定相同的函数运行两次(下载),它也会提供不同的哈希码.
然后this不是Service.或者,该服务已被销毁并在日志之间重新创建.
并且该服务可以运行几分钟直到完成,因此该服务可以被许多活动绑定/创建
然后Service可能正在被破坏和重建.如果您需要服务运行几分钟,您需要使用startService()和stopSelf()除了您bindService()和unbindService()电话.或者,也许你根本不需要绑定,在这种情况下你可以考虑使用IntentService,因为它会自动为你提供一个后台线程来进行下载.
我经历过类似的情况.
如果您已编写如下,则可以创建实例.
bindService(new Intent(getApplicationContext(), WeatherService.class), mServiceConnection, BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
尝试写一次如下.
getApplicationContext().bindService(new Intent(getApplicationContext(), WeatherService.class),mServiceConnection, BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28167 次 |
| 最近记录: |