San*_*go 0 android android-intent android-broadcast
我使用以下示例实现了重复报警
但是,一旦警报"熄灭"/收到警报,我想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);
}
Run Code Online (Sandbox Code Playgroud)
如果您仍希望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);
}
Run Code Online (Sandbox Code Playgroud)
初始化您的AlarmReceiver遗嘱将采用以下方式:
updateReceiver=new AlarmReceiver(new AlarmReceiverCallback() {
@Override
public void onAlarmReceived(Intent intent) {
//your list update code here
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7236 次 |
| 最近记录: |