gpt4 book ai didi

android - 使用绑定(bind)服务的自定义适配器 - 何时取消绑定(bind)?

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:35 25 4
gpt4 key购买 nike

设置:将数据馈送到 ListView 的自定义适配器。数据基于外部服务计算的一些数字。我正在使用 AIDL 绑定(bind)服务并获取我需要的数据。

问题:我怎么知道什么时候解除绑定(bind)服务?连接对适配器本身是私有(private)的,检测整个应用程序正在关闭的唯一方法是覆盖 unregisterDataSetObserver。或者至少我没有找到另一种方法,而这个方法使用内容提供者+内容观察器与同一个适配器配合得很好。虽然不适用于 AIDL - 我遇到了 ServiceConnectionLeaked 错误。

我知道我可以向我的适配器添加一个“unbindFromService”方法并从我的 Activity 的 onDestroy() 调用它,但这对我来说不够优雅。如果可能的话,我更喜欢一些“诚实”的触发器。

最佳答案

在您的 CustomAdapter 中实现 ActivityLifecycleCallbacks,然后从您的 Activity 调用中实现

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*/

}

关于android - 使用绑定(bind)服务的自定义适配器 - 何时取消绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886899/

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