我使用以下示例实现了重复警报
但是,一旦警报“响起”/收到,我想ListView
在活动活动中更新我的。我只有一个带有ListView
.
收到警报后,如何在主活动类中执行更新 UI 方法?您如何onReceive()
在AlarmReceiver
( extends BroadcastReceiver
) 类中调用它
我使用以下示例实现了重复警报
但是,一旦警报“响起”/收到,我想ListView
在活动活动中更新我的。我只有一个带有ListView
.
收到警报后,如何在主活动类中执行更新 UI 方法?您如何onReceive()
在AlarmReceiver
( extends BroadcastReceiver
) 类中调用它
最简单的方法是让您的 AlarmReceiver 成为您活动的内部类。这样,它将可以访问您活动的所有字段和方法。如果您不在其他任何地方使用它,它也可能是匿名的。要使其仅在活动时更新您的活动,请在 中注册您的接收器onResume()
并在 中取消注册onPause()
。请注意您将响应的IntentFilter
指定意图操作。BroadcastReceiver
例子:
private BroadcastReceiver updateReceiver;
//...
@Override
protected void onResume() {
super.onResume();
updateReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//your list update code here
}
};
IntentFilter updateIntentFilter=new IntentFilter("update");
registerReceiver(updateReceiver, updateIntentFilter);
}
@Override
protected void onPause() {
super.onPause();
if (this.updateReceiver!=null)
unregisterReceiver(updateReceiver);
}
如果您仍然希望您的 AlarmReceiver 是一个单独的类,请在初始化期间将某种回调传递给它:
public interface AlarmReceiverCallback {
public void onAlarmReceived(Intent intent);
}
//in your AlarmReceiver class:
private AlarmReceiverCallback callback;
public AlarmReceiver(AlarmReceiverCallback callback) {
this.callback=callback;
}
@Override
public void onReceive(Context context, Intent intent) {
callback.onAlarmReceived(intent);
}
您的初始化AlarmReceiver
将如下所示:
updateReceiver=new AlarmReceiver(new AlarmReceiverCallback() {
@Override
public void onAlarmReceived(Intent intent) {
//your list update code here
}
});