我有一个fragment
,我阅读了通话记录并显示在其中的recyclerview
中。
我使用内容观察器来应用呼叫日志更新。
recyclerview
中的最佳方法。
这是我的内容观察器类,以及我如何注册和注销它
public class CallLogChangeObserverClass extends ContentObserver
{
public CallLogChangeObserverClass(Handler handler, Context ct) {
super(handler);
// TODO Auto-generated constructor stub
}
@Override
public boolean deliverSelfNotifications() {
return true;
}
public void onChange(boolean selfChange) {
// Toast.makeText(getApplicationContext(), "call log changed", Toast.LENGTH_LONG).show();
}
我在这里注册内容查看器
@Override
public void onResume() {
super.onResume();
getActivity()
.getContentResolver()
.registerContentObserver(CallLog.Calls.CONTENT_URI, true, callLogchangeevents);
}
并注销:
@Override
public void onPause() {
super.onPause();
getActivity()
.getContentResolver()
.unregisterContentObserver(callLogchangeevents);
}
答案 0 :(得分:0)
问题解决了。以防万一有人遇到相同的问题,问题是我在onPause()方法中注销了观察者,所以在观察者无法检测到日志更改之前进行调用时,就取消了注册。我将unregister方法移到片段的detach方法上,并解决了问题。