动态广播:
情景:
界面1开启定时器,3秒发送一次通知,通知别的注册的页面进行页面刷新
此demo共2页面
界面1:
private CountDownTimer countDownTimer; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); countDownTimer = new CountDownTimer(99999999,3000) { @Override public void onTick(long millisUntilFinished) { Log.d("MainActivity", "发送成功"); // 主要广播代码************* Intent intent = new Intent(); intent.setAction("com.broadcast"); intent.putExtra("name", "" + millisUntilFinished); sendBroadcast(intent); // 主要广播代码*************** tv.setText("" + millisUntilFinished); } @Override public void onFinish() { } }; countDownTimer.start(); } // 注意在销毁时关闭计时器 @Override protected void onDestroy() { super.onDestroy(); countDownTimer.cancel(); }
界面2:
public class SecondActivity extends Activity { private static TextView tv; private InReceiver inReceiver; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secondlayout); tv = (TextView) findViewById(R.id.tv); inReceiver = new InReceiver(); //实例化过滤器并设置要过滤的广播 IntentFilter intentFilter = new IntentFilter("com.broadcast"); //注册广播 registerReceiver(inReceiver,intentFilter); } // 注意要取消注册 @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(inReceiver); } public class InReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String name = intent.getExtras().getString("name"); Toast.makeText(context, "接收到InReceiver:" + name, Toast.LENGTH_SHORT).show(); tv.setText(name + ""); } } }