我现在正在项目 S 中工作,该项目假装创建一个Android服务,该服务将在此 S 项目中启动,并从另一个项目 B 我想绑定到在 S 上运行的此服务。
我正在阅读Service for Android的官方文档,并且可以看到Android中的服务支持来自不同客户端应用程序的多个连接。当我在 S 上启动服务并尝试从 B 进行连接时,所有功能均正常运行,并且在 S 的日志中可以看到{{1 }}方法被调用。然后关闭 B ,并调用onBind
方法,这很完美。
我创建了另一个 B1 应用程序以连接 S 上的服务,这是我的问题,因为我正在提取onUnbind
中意图中包含的信息和onBind(intent: Intent?)
,因此我注意到每次调用这些方法时,即使关闭 B 并再次打开,或者关闭< em> B 并打开 B1 。
如果我在 S 上运行服务,然后打开 B ,如果我打开 B1 ,则onRebind(intent: Intent?)
方法将在我调用时被调用打开的 B 就像 S 仅接受一个连接一样。
我想知道我是否需要对Android服务有所了解,或者我的代码下面有错误
onBind
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startService(Intent(this, MyService::class.java))
}
}
B 和 B1 中的class MyService: Service() {
override fun onBind(intent: Intent?): IBinder? {
Log.i("MyService", "***onBind ${intent?.extras?.get("applicationId")} : ${intent?.extras?.get("applicationToken")}")
return null
}
override fun onUnbind(intent: Intent?): Boolean {
Log.i("MyService", "***onUnbind ${intent?.extras?.get("applicationId")} : ${intent?.extras?.get("applicationToken")}")
return true
}
override fun onRebind(intent: Intent?) {
Log.i("MyService", "***onRebind ${intent?.extras?.get("applicationId")} : ${intent?.extras?.get("applicationToken")}")
}
}