收听收音机就是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同。接受广播时广播(发送方)并不在意接收方收到广播时如何处理。
Android的广播机制在Android系统中有着各种各样的广播,比如电池的使用状态、电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。
Demo:
流程====== SecondActivity ---> MainActivity 【在SecondActivity中输入信息,并且点击按钮发送广播,传递数据到MainActivity中显示在Second Activity中输入的信息】
public class SecondActivity extends AppCompatActivity { TextView mShowInfo; Button start; private final View.OnClickListener mOnClick = new View.OnClickListener() { @Override public void onClick(View view) { if (start == view) { Log.e("MainActivity", "=========================="); Intent intent = new Intent(SecondActivity.this, MainActivity.class); startActivity(intent); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); /* *首先注册广播。 */ IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(MainActivity.ACTION); registerReceiver(mBroadcast, intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mBroadcast); } @Override protected void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mShowInfo = (TextView) findViewById(R.id.info); start = (Button) findViewById(R.id.start); start.setOnClickListener(mOnClick); } private BroadcastReceiver mBroadcast = new BroadcastTest(); class BroadcastTest extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { StringBuilder sb = new StringBuilder(mShowInfo.getText().toString()); sb.append("\n" + intent.getStringExtra("EXTRA")); mShowInfo.setText(sb.toString()); } } }
activity_second
<TextView android:id="@+id/info" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="info"/> <Button android:id="@+id/start" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="跳转" />
MainActivity
public class MainActivity extends AppCompatActivity { private Button mSendBtn, start; private EditText mEditTxt; public static final String ACTION = "com.example.pd_liu.broadcastdemo.send"; private final View.OnClickListener mOnClick = new View.OnClickListener() { @Override public void onClick(View view) { if(mSendBtn == view){ Intent intent = new Intent(); intent.setAction(ACTION); intent.putExtra("EXTRA", mEditTxt.getText().toString()); sendBroadcast(intent); } if(start == view){ Log.e("MainActivity", "=========================="); Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onPostCreate(@Nullable Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mSendBtn = (Button) findViewById(R.id.send_broadcast); mEditTxt = (EditText) findViewById(R.id.eidt_info); start = (Button) findViewById(R.id.start); mSendBtn.setOnClickListener(mOnClick); start.setOnClickListener(mOnClick); } }
activity_main<EditText android:id="@+id/eidt_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!" /> <Button android:id="@+id/send_broadcast" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="200dp" android:text="发送消息(附带数据)" /> <Button android:id="@+id/start" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="跳转" />
Android 广播的生命周期
最新推荐文章于 2023-07-18 13:00:00 发布