LocalBroadcastManager (로 컬 / 응용 내 방송 관리자)

2909 단어 방송 하 다.
LocalBroadcastManager 안내
하면, 만약, 만약... BroadcastReceiver 는 아직 잘 모 르 겠 습 니 다. 그럼 이동 하 십시오 (http://blog.csdn.net/plussoft/article/details/12871571)。
BroadcastReceiver 의 디자인 은 전체 적 으로 고려 하여 응용 프로그램 과 시스템, 응용 프로그램 간, 응용 프로그램 내 통신 을 편리 하 게 할 수 있 기 때문에 하나의 응용 프로그램 에 있어 BroadcastReceiver 는 안전성 문제 가 존재 합 니 다.이러한 보안 문 제 는 모두 Local BroadcastManager 를 통 해 해결 할 수 있 으 며, Local BroadcastManager 는 현재 응용 프로그램 에 만 방송 을 한정 할 수 있다.LocalBroadcastManager  보 내 는 방송 은 애플 리 케 이 션 을 떠 나 지 않 고 다른 애플 리 케 이 션 에서 온 방송 도 받 지 않 기 때문에 안심 하 셔 도 됩 니 다. Local BroadcastManager 에서 민감 한 정 보 를 전파 합 니 다.또한 LocalBroadcastManager 는 크로스 프로 세 스 메커니즘 을 사용 할 필요 가 없 기 때문에 상대 적 으로 BroadcastReceiver 는 더 효율 적 이 어야 합 니 다.
Local Broadcast Manager 는 android. support. v4 확장 패키지 의 클래스 입 니 다.
범례
MainActivity
public class MainActivity extends Activity {
	Button button1;
	MyBroadcastReceiver myBroadcastReceiver;
	LocalBroadcastManager lbm;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		/*
		 * LocalBroadcastManager     
		 *              LocalBroadcastManager.getInstance(context)      
		 *           
		 *      LocalBroadcastManager           
		 */
		lbm = LocalBroadcastManager.getInstance(this);
		
		myBroadcastReceiver = new MyBroadcastReceiver();
		
		IntentFilter filter = new IntentFilter();  
		filter.addAction("com.plusjun.test.hahaha");
		
		//           
		lbm.registerReceiver(myBroadcastReceiver, filter);
		
		button1 = (Button)findViewById(R.id.button1);
		button1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent();    
				intent.setAction("com.plusjun.test.hahaha");    
				intent.putExtra("name", "plus"); 
				//    
				lbm.sendBroadcast(intent);
			}
		});
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		//        
		lbm.unregisterReceiver(myBroadcastReceiver);
	}
}

MyBroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		String str = intent.getStringExtra("name");
		sLog(str);
	}
	
	private void sLog(String str) {
		Log.i("MyBroadcastReceiver", str);
	}
}

화해시키다 BroadcastReceiver 등록 과 방송 전송 차이 가 많 지 않 습 니 다. 호출 대상 이 Activity 에서 바 뀌 었 을 뿐 입 니 다. LocalBroadcastManager。
LocalBroadcastManager 수신 기 는 코드 로 만 등록 (동적 등록) 할 수 있 으 며 존재 하지 않 습 니 다. BroadcastReceiver 의 그런 Android Manifest 등록.
상기 부분 내용 의 전재 또는 참고 출처 는 다음 과 같다.http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html 감사 드 립 니 다.전재 할 때 출처 를 밝 혀 주 십시오. 판권 은 원작 자의 소유 이 며 동의 없 이 어떠한 상업 용도 에 도 사용 하 는 것 을 엄금한다.웨 이 보:http://weibo.com/theworldsong 메 일 박스:[email protected]

좋은 웹페이지 즐겨찾기