android 服务解除绑定,Android - 跨多个活动管理本地服务绑定/解除绑定的有效方法...

从API Level 4及更高版本进行定位和构建 .

现在,我正在处理一个问题,我试图在多个活动中维护与本地服务的绑定,并在最后一个连接未绑定时停止服务 .

简而言之,我的服务只是调用HandlerThread中的系统服务,该服务快速返回到BroadcastReceiver,然后在等待预定的时间(至少15秒)后再次执行相同的调用 .

假设我的基本活动以这种方式在onCreate()中为我的服务创建第一个绑定:

Intent service = new Intent(ActivityA.this, MyLocalService.class);

getApplicationContext().bindService(service, mConnection, BIND_AUTO_CREATE);

假设由于我通过携带绑定和连接来保持我在屏幕旋转中的绑定这一事实,我不会在活动结束之前解除绑定:// onRetainNonConfigurationInstance继承我的绑定和连接,因为我绑定了应用上下文,所以他们是公平的游戏 .

public void onDestroy(){

super.onDestroy();

//using binder, remove callback to service from current activity

if(isFinishing(){

getApplicationContext().unbindService(mConnection);

}

}

我几乎为任何其他想要收听服务的Activity做这个设置 .

我的问题是,最终,某些活动不会立即解除绑定,因此如果服务是自动创建的,则服务仍将依赖于绑定/解除绑定模式的行为 . 在解除最后一个活动的绑定之前,我不得不停止我的线程,这阻止了在BG中调用任何系统服务 . 是否有更好的方法来管理绑定和解除绑定的服务,或者我是否正在使用当前的设置?此外,由于我的服务(通过 Binders )被弱引用,这会降低我泄漏内存的风险吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值