android-使用绑定服务的自定义适配器-何时取消绑定?
作者:互联网
安装程序:自定义适配器,将数据馈入ListView.数据基于外部服务计算的一些数字.我正在使用AIDL绑定服务并获取所需的数据.
问题:我怎么知道何时解除服务绑定?连接是适配器本身专用的,并且检测到整个应用程序正在关闭的唯一方法是覆盖unregisterDataSetObserver.或者至少我没有找到其他方法,并且该方法与使用内容提供者内容观察器的同一适配器一起使用时效果很好.但是不适用于AIDL-我收到了ServiceConnectionLeaked错误.
我知道我可以在适配器中添加一个“ unbindFromService”方法,并从我的活动的onDestroy()中调用它,但这对我来说还不够优雅.如果可能的话,我希望一些“诚实”的触发器.
解决方法:
在CustomAdapter中实现ActivityLifecycleCallbacks,然后从活动调用中实现
mAdapter.setActivity(this);
转接器类别
public class CustomAdapter extends ArrayAdapter<String> implements ActivityLifecycleCallbacks{
Activity mActivity;
public void setActivity(Activity activity) {
/* or you could remove setactivity and do below operation in Constructor */
mActivity = activity;
mActivity.getApplication().registerActivityLifecycleCallbacks(this);
}
@Override
public void onActivityDestroyed(Activity activity) {
/*unregister so that you do not get callbacks after activity is destroyed*/
if(activity instanceof MainActivity)
mActivity.getApplication().unregisterActivityLifecycleCallbacks(this);
/*unregister your activity or in any other callbacks*/
}
/* skipped other dummy functions*/
}
标签:aidl,android,android-adapter 来源: https://codeday.me/bug/20191031/1976293.html