ブロードキャストの登録
3339 ワード
通常の放送は携帯電話全体の範囲内で送信され、すべてのアプリケーションが内部放送を受信して自分のプログラム内部でしか送信されず、自分のアプリケーション内部だけが放送を送受信できるようになっています
静的登録ブロードキャスト
静的な放送はプログラムのプロセスが殺されていない限り、ずっと存在し、すべての活動が破壊されても、プロセスが強制的に脱退されていないか、殺されていない限り、静的な放送はずっと存在します.ここでintent-filterはactivityのintent-filterと同じで、複数のactionを設定したり、data属性を設定したりすることができます.
カスタムブロードキャストの登録
カスタムブロードキャストは、ブロードキャストを送信および受信する方法1を自分で書く必要があります.1ブロードキャストを継承するクラスを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
このようなブロードキャストには、システムブロードキャスト、または他のアプリケーションのブロードキャストが含まれ、このようなブロードキャストは、自分のプログラム内でブロードキャストを送信する必要がなく、ブロードキャストを登録する必要があります.例えば,ネットワークの変化を傍受するブロードキャストは,システムネットワークが変化すれば自動的に1つのブロードキャストが送信され,自分のプログラム内でこのブロードキャストを受信して処理すればよい.1クラス継承BroadcastReceiverを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
動的登録されたブロードキャストは、アクティブ破棄時に登録をキャンセルしなければならないため、動的ブロードキャストとactivityは共に生存し、activityが破棄されると動的ブロードキャストも破棄される.動的に登録されたブロードキャストは、プロファイルに登録する必要はありません.これは、4つのコンポーネントのうち唯一登録する必要がない場合です.
カスタムブロードキャストの登録
1クラス継承BroadcastReceiverを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
手順は上と同じですが、actionの名前を既知のactionのnameに変えるだけです
静的登録ブロードキャスト
静的な放送はプログラムのプロセスが殺されていない限り、ずっと存在し、すべての活動が破壊されても、プロセスが強制的に脱退されていないか、殺されていない限り、静的な放送はずっと存在します.ここでintent-filterはactivityのintent-filterと同じで、複数のactionを設定したり、data属性を設定したりすることができます.
カスタムブロードキャストの登録
カスタムブロードキャストは、ブロードキャストを送信および受信する方法1を自分で書く必要があります.1ブロードキャストを継承するクラスを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("receiver","receiver");
}
}
2プロファイルでブロードキャストreceiverを構成するnameは上で定義したブロードキャストクラスのクラス名であり、actionのnameはブロードキャスト対応のactionのnameであり、カスタムブロードキャストのactionのnameは自分で勝手に定義することができる.すなわち,送信された放送のactionがこのactionと一致すると,この放送は応答する.
既存のブロードキャストの登録このようなブロードキャストには、システムブロードキャスト、または他のアプリケーションのブロードキャストが含まれ、このようなブロードキャストは、自分のプログラム内でブロードキャストを送信する必要がなく、ブロードキャストを登録する必要があります.例えば,ネットワークの変化を傍受するブロードキャストは,システムネットワークが変化すれば自動的に1つのブロードキャストが送信され,自分のプログラム内でこのブロードキャストを受信して処理すればよい.1クラス継承BroadcastReceiverを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("receiver","receiver");
}
}
2プロファイルにブロードキャストを設定するとactionのnameは自分で定義できなくなり、それぞれのタイプのブロードキャストには自分のactionのnameがあり、どのタイプのブロードキャストを受信するか、actionのnameは何と書くか、ここでの例はネットワークの変化を傍受するブロードキャストであり、ネットワークが変化すると、このようなブロードキャストが送信され、対応するonReceiveメソッドがトリガーされ、中で処理すればいいです.
動的登録ブロードキャスト動的登録されたブロードキャストは、アクティブ破棄時に登録をキャンセルしなければならないため、動的ブロードキャストとactivityは共に生存し、activityが破棄されると動的ブロードキャストも破棄される.動的に登録されたブロードキャストは、プロファイルに登録する必要はありません.これは、4つのコンポーネントのうち唯一登録する必要がない場合です.
カスタムブロードキャストの登録
1クラス継承BroadcastReceiverを新規作成し、対応するブロードキャストを送信すると、onReceiveメソッドを書き換えます.onReceiveメソッドが実行されます
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("receiver","receiver");
}
}
2 activityのoncreateメソッドにブロードキャストを動的に登録します.onDestoryでのブロードキャストの登録解除public class DetailActivity extends Activity {
private MyReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail_activity_layout);
//
myReceiver=new MyReceiver();
// action
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("com.zyl.receiver");
//
registerReceiver(myReceiver,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
//
unregisterReceiver(myReceiver);
}
}
既存のブロードキャストの登録手順は上と同じですが、actionの名前を既知のactionのnameに変えるだけです