The use of Android broadcasting (1)

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>

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326379649&siteId=291194637