您的位置:首页 > 产品设计 > UI/UE

BroadcastReceiver更新UI

2015-12-04 09:20 531 查看
通过BroadcastReceiver可以监听系统发出被通知, 如是否联网, 但不能在BroadcastReceiver访问Activity, 如果想根据联网状态来更新UI怎么做?

把BroadcastReceiver作为Activity的内部类!

如此做可以实现两个重要的功能:

1. 在BroadcastReceiver内部访问Activity的方法;

2. 根据Activity的生命周期开关BroadcastReceiver.

代码实现:

<span style="font-size:14px;color:#009900;">public class MainActivity extends Activity {

private static final String ACTION = "leo.myreceiver.action";
private MyReceiver myReceiver;
private IntentFilter intentFilter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

myReceiver = new MyReceiver();
intentFilter = new IntentFilter(ACTION);

startService(this, MyService.class);                 // 开启Service, 等待5秒后, 发送广播
}

@Override
protected void onResume() {
super.onResume();
registerReceiver(myReceiver, intentFilter);          // 注册广播
}

@Override
protected void onPause() {
super.onPause();                                     // 取消注册广播
unregisterReceiver(myReceiver);
}

private void update(){
// 更新UI
}

private class MyReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
update();
}
}
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: