詳細な放送メカニズム(林郭先生の作品をご覧ください)

システムレベルのメッセージ通知を容易にするために、 Androidのは、現実の生活放送機構と同様のメッセージを紹介します。

Androidの各アプリケーションはプログラムのみ関心の放送コンテンツを受信するように、自分の興味を放送するために登録することができ、これらの放送は、他のアプリケーションから、システムから来るかもしれません。

Androidのは、標準のラジオ放送と秩序:主に2種類に分け放送です。

標準放送は、放送後に発行された放送完全非同期実行、で、すべての放送受信機は、同時に、このブロードキャストメッセージを受信します。

注文した放送は、放送後に発行された同期実行を、放送され、同じ時間はわずか放送受信機は、このブロードキャストメッセージを受け取ることができますが存在します。

放送受信システム ------ 放送受信機

2話の登録した放送があり、登録コードは動的登録と呼ばれています。 AndroidMainfest.xml 静的登録と呼ばれた登録。

放送受信機を作成する方法? 私達はちょうど新しいクラスを作成する必要があり、それが継承し、BroadcastReceiverを親クラスオーバーライドし、その後onReceive()メソッドを。この放送は、ときonReceive()メソッドが実装され、我々は、特定のロジックで、このメソッドを追加することができます。

放送受信機の基本的な使用方法を理解するための例で見てみましょう。



パブリッククラス MainActivityは拡張 AppCompatActivity {
     プライベート IntentFilter intentFilterをプライベート NetworkChangeReceiver networkChangeReceiver@Override
 保護されたボイドのonCreate(バンドルsavedInstanceState){
         スーパー .onCreate(savedInstanceState)。
        setContentView(R.layout。activity_main);
        intentFilter = 新しい IntentFilter();
        intentFilter .addAction("android.net.conn.CONNECTIVITY_CHANGE");
        networkChangeReceiver = 新しいです

        NetworkChangeReceiver(); 
        registerReceiver(networkChangeReceiverintentFilter)。


    } @Overrideは
 ボイド保護 onDestroy(){
         スーパー .onDestroyを(); 
       unregisterReceiver(networkChangeReceiver)。
    } クラス NetworkChangeReceiverは延び BroadcastReceiver {
         @Override
 公共ボイド onReceive(コンテキスト・コンテキスト、テントの意図){ 
            トースト。MAKETEXT(文脈、"ネットワーク変更"、トースト。LENGTH_SHORT).SHOW(); 
        } 
}
        

              

 
    }

首先,我们在MainActivity中定义了一个内部类,让它继承BroadcastReceiver,并且重写了父类的onReceiver()方法。

接着,我们新建一个IntentFilter的实例,并且给它添加了一个值为android.net.conn.CONNECTIVITY_CHANGEaction.

接着我们又实例了一个NetworkChangeReceiver对象

调用registerReceiver()方法进行注册,将NetworhChangeReceiver的实例和IntentFilter的实例传进去。这样就实现了监听网络变化的功能。

注意,动态注册的广播接收器一定都要取消注册,我们在onDestroy()方法中通过调用unregisterReceiver()方法来实现。



发布了37 篇原创文章 · 获赞 10 · 访问量 1万+

おすすめ

転載: blog.csdn.net/OneLinee/article/details/77914725