package jp.mixi.sample.intent.localbroadcast;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
public static final String TAG = MainActivity.class.getSimpleName();
public static final String ACTION_HOGEHOGE = "jp.mixi.sample.android.intent.action.HOGEHOGE";
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "local broadcast received.");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
// この Activity の Context の中での、Local な Broadcast を管理する為の LocalBroadcastManager オブジェクト
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this);
manager.registerReceiver(mReceiver, new IntentFilter(ACTION_HOGEHOGE));
}
@Override
protected void onStop() {
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this);
manager.unregisterReceiver(mReceiver);
super.onStop();
}
public void onClick(View v) {
// Local な Broadcast として Intent を投げる
// 通常の sendBroadcast(Intent) メソッドと違い、この仕組で投げた Intent は他のアプリ(プロセス)では拾うことが出来ない
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(this);
manager.sendBroadcast(new Intent(ACTION_HOGEHOGE));
}
}