Android broadcast is divided into two aspects: broadcast sender and broadcast receiver BroadcastReceiver.
BroadcastReceiver can be divided into two types of registration: static registration and dynamic registration.
Static registration: Register directly in the AndroidManifest.xml file.
Dynamic registration: call the Context's registerReceiver function directly in the code.
Dynamic registration:
Activity class code:
public class MainActivity extends Activity { private static final String SERVICE_NAME = "com.seasy.android.MyRemoteService"; private static final String BROADCAST_ACTION = "com.seasy.android.MyBroadcastReceiver"; private MyBroadcastReceiver broadcastReceiver; private TextView txtMessage = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.main); txtMessage = (TextView)findViewById(R.id.txtMessage); doRegisterReceiver(); //Start Service Intent serviceIntent = new Intent(MainActivity.this, MyRemoteService.class); startService(serviceIntent); } @Override protected void onDestroy() { super.onDestroy (); doUnregisterReceiver(); } /** * Register broadcast receiver */ private void doRegisterReceiver(){ broadcastReceiver = new MyBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(BROADCAST_ACTION); registerReceiver(broadcastReceiver, intentFilter); } /** * unregister broadcast receiver */ private void doUnregisterReceiver(){ unregisterReceiver(broadcastReceiver); } public TextView getTxtMessage() { return txtMessage; } //Broadcast receiver class: After receiving the broadcast message, display the message in the text box of the interface class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String messageData = intent.getStringExtra("messageData"); getTxtMessage().setText(messageData); } } }
Service class code:
public class MyRemoteService extends Service { private static final String BROADCAST_ACTION = "com.seasy.android.MyBroadcastReceiver"; @Override public void onCreate() { super.onCreate(); sendBroadcastMessage("Start Thrift Server"); } @Override public IBinder onBind(Intent intent) { return null; } /** * send broadcast */ private void sendBroadcastMessage(String messageData){ Intent intent = new Intent(); intent.setAction(BROADCAST_ACTION); intent.putExtra("messageData", messageData); sendBroadcast (intent); } }
Add the following configuration information to the AndroidManifest.xml file:
<service android:name="com.seasy.android.MyRemoteService" android:exported="false"></service>