カスタムブロードキャストの送信
3790 ワード
私たちは放送が私たちの考えに基づいていくつかのものを実現することを望んで、私たちは放送を出して、放送受信機の中で自分の論理を実現して、放送は活動の影響を受けないで、私たちの考えを自由にプログラムの中で行き来させます(自分の理解).だから、カスタム放送は私たちの考えを実現する鍵になりました.前編では、放送は2つに分けられています.1つは、標準放送、もう1つは秩序放送で、彼らの違いは同時に到着するかどうかと遮断できるかどうかです.次に、標準放送をカスタマイズします.まず、Inent intent=new Inent("wang");//パラメータはStringタイプの文字列です.次は私たちのブロードキャストを送信して、使用して、sendBroadcast()形式は:sendBroadcast(intent);次に、ブロードキャストを受信するか、動的ブロードキャスト受信機を定義します.IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction(“wang”);//パラメータは、ブロードキャストを発行し、ブロードキャスト受信機をBroadcastReceiver broadcastReceiver=new BroadcastReceiver()にインスタンス化します.その後registerReceiver(broadcastReceiver,intent)の登録を行う.ここの放送は私たちがどこでも受信できる標準放送で、彼はプログラムとアプリの間で自由に通り抜けて、私たちの論理を実現することができます.ソース:public class MainActivity extends ActionBarActivity implements View.OnClickListener { private Button button; private BroadcastReceiver broadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.button); button.setOnClickListener(this); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction(“shao.zheng.wang”); broadcastReceiver=new BroadcastReceiver(); registerReceiver(broadcastReceiver,intentFilter);
}//BroadcastReceiver類public class BroadcastReceiver extends android.content.BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,”shaozhengwang”,Toast.LENGTH_LONG).show(); } } 最後にactivityのonDestory()メソッドでunregisterReceiver()を実現することを忘れてはいけない.protected void onDestroy() { super.onDestroy(); unregisterReceiver(broadcastReceiver); unregisterReceiver(anotherBroadcastReceiver); } 次に、秩序化されたブロードキャストを実現し、ブロードキャスト受信機を再構築します.public class AnotherBroadcastReceiver extends android.content.BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,”yes”,Toast.LENGTH_LONG).show(); } } public class MainActivity extends ActionBarActivity implements View.OnClickListener { private Button button; private BroadcastReceiver broadcastReceiver; private AnotherBroadcastReceiver anotherBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.button); button.setOnClickListener(this); IntentFilter intentFilter1=new IntentFilter(); IntentFilter intentFilter=new IntentFilter(); //2つのintentFilterを確立し、優先度をそれぞれ指定することを目的としています.intentFilter.addAction(“shao.zheng.wang”); intentFilter1.addAction(“shao.zheng.wang”); intentFilter1.setPriority(100); //BroadcastReceiverの優先度を100に設定すると、ブロードキャストは必ずBroadcastReceiverに先に受信されます.broadcastReceiver=new BroadcastReceiver(); anotherBroadcastReceiver=new AnotherBroadcastReceiver(); registerReceiver(broadcastReceiver, intentFilter1); registerReceiver(anotherBroadcastReceiver,intentFilter); } @Override public void onClick(View v) { Intent intent=new Intent(“shao.zheng.wang”); sendOrderedBroadcast(intent,null); }
}//BroadcastReceiver類public class BroadcastReceiver extends android.content.BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) {
}プログラムを実行するとBroadcastReceiverのToastのみが実行されることがわかります.
}
@Override
public void onClick(View v) {
Intent intent=new Intent("shao.zheng.wang");
sendBroadcast(intent);
}
}//BroadcastReceiver類public class BroadcastReceiver extends android.content.BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,”shaozhengwang”,Toast.LENGTH_LONG).show(); } } 最後にactivityのonDestory()メソッドでunregisterReceiver()を実現することを忘れてはいけない.protected void onDestroy() { super.onDestroy(); unregisterReceiver(broadcastReceiver); unregisterReceiver(anotherBroadcastReceiver); } 次に、秩序化されたブロードキャストを実現し、ブロードキャスト受信機を再構築します.public class AnotherBroadcastReceiver extends android.content.BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,”yes”,Toast.LENGTH_LONG).show(); } } public class MainActivity extends ActionBarActivity implements View.OnClickListener { private Button button; private BroadcastReceiver broadcastReceiver; private AnotherBroadcastReceiver anotherBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.button); button.setOnClickListener(this); IntentFilter intentFilter1=new IntentFilter(); IntentFilter intentFilter=new IntentFilter(); //2つのintentFilterを確立し、優先度をそれぞれ指定することを目的としています.intentFilter.addAction(“shao.zheng.wang”); intentFilter1.addAction(“shao.zheng.wang”); intentFilter1.setPriority(100); //BroadcastReceiverの優先度を100に設定すると、ブロードキャストは必ずBroadcastReceiverに先に受信されます.broadcastReceiver=new BroadcastReceiver(); anotherBroadcastReceiver=new AnotherBroadcastReceiver(); registerReceiver(broadcastReceiver, intentFilter1); registerReceiver(anotherBroadcastReceiver,intentFilter); } @Override public void onClick(View v) { Intent intent=new Intent(“shao.zheng.wang”); sendOrderedBroadcast(intent,null); }
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(broadcastReceiver);
unregisterReceiver(anotherBroadcastReceiver);
}
}//BroadcastReceiver類public class BroadcastReceiver extends android.content.BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"shaozhengwang",Toast.LENGTH_LONG).show();
abortBroadcast();
//
}
}プログラムを実行するとBroadcastReceiverのToastのみが実行されることがわかります.