tun*_*ing 13 service android android-activity
我有一个Android服务,即使在最后一个Activity从堆栈中弹出,或者用户已选择执行其他操作,我仍希望继续运行.
本质上,服务正在侦听远程服务器上的更改,当且仅当应用程序中的活动未运行(或可见)时,我才想生成通知.换句话说,我不希望在用户直接与应用程序交互时发生通知.
在用户直接与应用程序交互的情况下,服务将通知活动并基于更改更新适当的UI元素.我计划通过观察者模式实现这一点.
如果没有应用程序活动绑定到它,服务如何知道?
谢谢,J
Sha*_*ley 25
您需要在onBind,onUnbind和onRebind方法中使用布尔值:
public boolean bound;
@Override
public Binder onBind(Intent intent){
bound = true;
return myBinder; //declare and init your binder elsewhere
}
@Override
public boolean onUnbind(Intent intent) {
bound = false;
return true; // ensures onRebind is called
}
@Override
public void onRebind(Intent intent) {
bound = true;
}
Run Code Online (Sandbox Code Playgroud)
仅当所有客户端都已断开连接时才会调用onUnbind .因此绑定将保持为真,直到所有客户端断开连接.
**注:根据Gil的反馈进行编辑.**
Gil*_*ach 11
我不能评论SharkAlley的答案,所以我在这里重播.
不幸的是,每次客户端连接时都不会调用onBind().例如,请参阅Hackborne夫人的回答:https://groups.google.com/d/msg/android-developers/2IegSgtGxyE/iXP3lBCH5SsJ
一种可能的解决方案是返回true,onUnbind()并将标志设置为true,onBind()并打开和onRebind()(和false onUnbind()).