Android学習--BroadcastReceiver
13953 ワード
ブロードキャストとは
ぶんかつ
登録方法
ブロードキャストの使用方法
静的登録無秩序ブロードキャスト:
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="zhifubao"/>//
intent-filter>
receiver>
送信者sendActivity:
public class SendActivity extends AppCompatActivity {
private Button messageBtn;
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send);
messageBtn=findViewById(R.id.message_btn);
messageBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("zhifubao");
sendBroadcast(intent);
}
});
受信者MainActivity:変更せずに新しいMyReceivedivediverエンティティークラスを作成:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " ", Toast.LENGTH_SHORT).show();
}
AndroidManifest追加:
<receiver android:name=".MyReceiver">
<action android:name="zhifubao"/>
intent-filter>
receiver>
ダイナミックレジストリ無秩序ブロードキャスト
送信側は変更しない
受信者
以前AndroidManifestが追加した削除を、MainActivityを変更せずに以前のベースで受信者を変更
public class MainActivity extends AppCompatActivity {
private MyReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("zhifubao");
//
registerReceiver(receiver, filter)
静的レジストリ順序付きブロードキャスト
受信者に新しいエンティティークラスMyReceiverを作成
送信者:SendActivity:
public class SendActivity extends AppCompatActivity {
private Button messageBtn;
private Button messageBtn2;
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send);
messageBtn=findViewById(R.id.message_btn);
messageBtn2=findViewById(R.id.message2_btn);
messageBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("zhifubao");
sendBroadcast(intent);
}
});
//
messageBtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("zhifubao");
//
sendOrderedBroadcast(intent,null);//
}
});
}
受信者
AndroidManifest追加:
<receiver android:name=".MyReceiver">
<intent-filter android:priority="1000"> //
<action android:name="zhifubao"/>
intent-filter>
receiver>
<receiver android:name=".MyReceiver2">
<intent-filter android:priority="-1000">//
<action android:name="zhifubao"/>
intent-filter>
receiver>
MyReceiver:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " ", Toast.LENGTH_SHORT).show();
}
MyReceiver2:
public class MyReceiver2 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " 2 ", Toast.LENGTH_SHORT).show();
}
動的登録規則放送
送信側は変更しない
受信者:
AndroidManifest以前に追加されたすべてのマスク
MainActivity:
public class MainActivity extends AppCompatActivity {
private MyReceiver receiver;
private MyReceiver2 receiver2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("zhifubao");
// ,
filter.setPriority(1000);//
//
registerReceiver(receiver, filter);
receiver2=new MyReceiver2();
IntentFilter filter1=new IntentFilter();
filter1.addAction("zhifubao");
// ,
filter.setPriority(-1000);//
//
registerReceiver(receiver2,filter1);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}
MyReceiver:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " ", Toast.LENGTH_SHORT).show();
Log.e("MyReceiver","1111111111111");//
abortBroadcast();// MyReceiver2
}
}
MyReceiver2:
public class MyReceiver2 extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, " 2 ", Toast.LENGTH_SHORT).show();
Log.e("MyReceiver2","22222222222");//
}
}