L. *_*ter 3 android broadcastreceiver android-broadcastreceiver
BroadcastReceiver我的应用程序中有一个,其定义AndroidManifest.xml如下:
<receiver android:name=".receiver.MyTaskReceiver">
<intent-filter>
<action android:name="xxx.xxx.xxx" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
这是MyTaskReceiver代码:
public class MyTaskReceiver extends BroadcastReceiver {
private ReceiverListener listener ;
@Override
public void onReceive(Context context, Intent intent) {
//do general things
if(listener != null) {
listener.received(); //do special things if the listener is setted up.
}
}
public void setListener(ReceiverListener listener) {
this.listener = listener;
}
public interface ReceiverListener {
void received();
}
}
Run Code Online (Sandbox Code Playgroud)
当接收者有意图时,我会先做一些一般的事情,比如保存数据...
但是如果向用户显示指定的活动,我需要更改活动的视图,因此我使用它ReceiverListener来执行此操作.设置一个监听器MyTaskReceiver中onCreate,并设置null在onDestroy.
然后是一个问题,如何获取实例,MyTaskReceiver以便我可以设置一个监听器呢?
或者还有其他方法可以实现我想要的吗?
谢谢.
您可以在活动中注册接收器,如下所示:
private void registerBroadcastReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(xxx.xxx.xxx);
registerReceiver(this.broadcastReceiver, intentFilter);
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
//do whatever need to be done
}
};
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!:)
并记得取消注册您的接收器(例如onDestroy())
unregisterReceiver(this.broadcastReceiver);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |