gpt4 book ai didi

android - 仅创建一个 Service 实例 (Android)

转载 作者:IT老高 更新时间:2023-10-28 21:46:44 24 4
gpt4 key购买 nike

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

我已经检查了一些带有日志记录的功能(WeatherService 是扩展 Service 的类):

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

我将 Activity 绑定(bind)到服务:

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

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

最佳答案

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

给定的Service只能有一个实例。

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

那么this 不是Service。或者,服务已被销毁并在日志之间重新创建。

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

那么 Service 可能正在被销毁并重新创建。如果您需要服务运行几分钟,除了 bindService()unbindService() 调用。或者,也许您根本不需要绑定(bind),在这种情况下,您可以考虑使用 IntentService,因为它会自动为您提供一个后台线程来进行下载。

关于android - 仅创建一个 Service 实例 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com