Dynamic broadcast:
scene:
Interface 1 starts the timer and sends a notification every 3 seconds to notify other registered pages to refresh the page
This demo has a total of 2 pages
Interface 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", "Send successfully"); // Main broadcast code ************* Intent intent = new Intent(); intent.setAction("com.broadcast"); intent.putExtra("name", "" + millisUntilFinished); sendBroadcast (intent); // Main broadcast code **************** tv.setText("" + millisUntilFinished); } @Override public void onFinish() { } }; countDownTimer.start(); } // Note that the timer is turned off on destruction @Override protected void onDestroy() { super.onDestroy (); countDownTimer.cancel(); }
Interface 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(); //Instantiate the filter and set the broadcast to filter IntentFilter intentFilter = new IntentFilter("com.broadcast"); // register broadcast registerReceiver(inReceiver,intentFilter); } // Note to unregister @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 + ""); } } }