カスタムブロードキャストの送信と受信
文書ディレクトリ
###1、静態登録
1)まずMainActivityにactionを含むintentを新規作成する
2)intentにキー値、データを追加します.
3)放送の送信
4)新しいクラス継承BroadcastReceiverというクラス5)実装におけるonReceiveメソッド6)受信したものによって異なるactionを実現する.
7)AndroidManifest.xmlファイルにイベントリスニングを追加
8)運転テスト05-07 12:52:03.785 2982-10999/com.google.android.gms I/Icing: Indexing 916F24153C204B1D5D12E14401BC67324995BE10 from com.google.android.googlequicksearchbox 05-07 12:52:03.842 14551-14551/com.example.lum.mydroadcast I/System.out:受信ブロードキャストのデータ:hello 05-07 12:52:03.842982-10999/com.google.android.gms I/Icing: Indexing done 916F24153C204B1D5D12E14401BC67324995BE10
log情報を観察し,送信ブロードキャストが受け入れられ,データが伝達される.
主な考え方:1)ブロードキャストを受けるクラス継承BroadcastReceiverを作成し,switchの異なるactionを傍受する2)intent設定動作,携帯データを作成し,ブロードキャストを送信する3)Manifest.xmlファイル静的登録、actionとreceiveをバインド
####2、動的登録1)受信した放送受信クラスの作成
2)プライマリactivityにブロードキャスト受信機を動的に登録するとともにintentFilterでフィルタリングされたアクションオブジェクトをバインドする3)intentオブジェクトを作成携帯データ送信ブロードキャストを追加する4)登録解除
効果:logを観覧します:05-27 07:18:40.392 16762-16762/?I/System.out:受信した放送のデータ:Hi!I am broadcastData! 05-27 07:18:40.439 16762-16785/? I/OpenGLRenderer: Initialized EGL, version 1.4
構想分析:1)ブロードキャストを受けるクラス継承BroadcastReceiverを作成し,switchの異なるactionを傍受する2)メインactivityでインスタンス化して作成した傍受クラス,intentfilterオブジェクトをインスタンス化する3)フィルタリングしたactionとブロードキャストの受信機を登録によりバインドする4)intent設定actionを作成し,データを携帯し,ブロードキャストを送信する5)登録を取り消す
###3、注意事項放送の受け入れ方法では、実行するコードの論理時間は10 sを超えてはいけない.そうしないと、プログラムのエラーを引き起こす.具体的に実行する大量の論理コードは、他のクラスの方法で実現することができる.
###1、静態登録
1)まずMainActivityにactionを含むintentを新規作成する
2)intentにキー値、データを追加します.
3)放送の送信
package com.example.lum.mydroadcast;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
// ( Action)
intent.setAction("myBroadCast");
//
intent.putExtra("data","hello");
// ( )
sendBroadcast(intent);
}
}
4)新しいクラス継承BroadcastReceiverというクラス5)実装におけるonReceiveメソッド6)受信したものによって異なるactionを実現する.
package com.example.lum.mydroadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* Created by lum on 2018/5/27.
*/
public class BroadCastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myBroadCast")) {
// ,
String str = intent.getStringExtra("data");
System.out.println(" :" + str);
}
}
}
7)AndroidManifest.xmlファイルにイベントリスニングを追加
8)運転テスト05-07 12:52:03.785 2982-10999/com.google.android.gms I/Icing: Indexing 916F24153C204B1D5D12E14401BC67324995BE10 from com.google.android.googlequicksearchbox 05-07 12:52:03.842 14551-14551/com.example.lum.mydroadcast I/System.out:受信ブロードキャストのデータ:hello 05-07 12:52:03.842982-10999/com.google.android.gms I/Icing: Indexing done 916F24153C204B1D5D12E14401BC67324995BE10
log情報を観察し,送信ブロードキャストが受け入れられ,データが伝達される.
主な考え方:1)ブロードキャストを受けるクラス継承BroadcastReceiverを作成し,switchの異なるactionを傍受する2)intent設定動作,携帯データを作成し,ブロードキャストを送信する3)Manifest.xmlファイル静的登録、actionとreceiveをバインド
####2、動的登録1)受信した放送受信クラスの作成
package com.example.lum.mydroadcast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
/**
* Created by lum on 2018/5/27.
*/
public class BroadCastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("myBroadCastAction")) {
// ,
String str = intent.getStringExtra("data");
System.out.println(" :" + str);
}
}
}
2)プライマリactivityにブロードキャスト受信機を動的に登録するとともにintentFilterでフィルタリングされたアクションオブジェクトをバインドする3)intentオブジェクトを作成携帯データ送信ブロードキャストを追加する4)登録解除
package com.example.lum.mydroadcast;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private BroadCastReceive mBroadCastReceive ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
//
mBroadCastReceive = new BroadCastReceive();
IntentFilter intentFiltet = new IntentFilter();
// ( Action, )
intentFiltet.addAction("myBroadCastAction");
// , , ,intent
registerReceiver(mBroadCastReceive,intentFiltet);
// intent
Intent intent = new Intent();
//
intent.setAction("myBroadCastAction");
//
intent.putExtra("data", "Hi!I am broadcastData!");
sendBroadcast(intent);
}
@Override
protected void onPause() {
//
unregisterReceiver(mBroadCastReceive);
super.onPause();
}
}
効果:logを観覧します:05-27 07:18:40.392 16762-16762/?I/System.out:受信した放送のデータ:Hi!I am broadcastData! 05-27 07:18:40.439 16762-16785/? I/OpenGLRenderer: Initialized EGL, version 1.4
構想分析:1)ブロードキャストを受けるクラス継承BroadcastReceiverを作成し,switchの異なるactionを傍受する2)メインactivityでインスタンス化して作成した傍受クラス,intentfilterオブジェクトをインスタンス化する3)フィルタリングしたactionとブロードキャストの受信機を登録によりバインドする4)intent設定actionを作成し,データを携帯し,ブロードキャストを送信する5)登録を取り消す
###3、注意事項放送の受け入れ方法では、実行するコードの論理時間は10 sを超えてはいけない.そうしないと、プログラムのエラーを引き起こす.具体的に実行する大量の論理コードは、他のクラスの方法で実現することができる.