Android--BroadcastReceiverの使用

6743 ワード

BroadcastReceiverは、システムおよびアプリケーションからのブロードキャストを受信するために使用される「ブロードキャスト受信者」という意味です.Androidシステムでは、例えば起動が完了するとシステムが放送を生成し、この放送を受信すると起動サービスの機能を実現することができる.ネットワークの状態が変化すると、システムはブロードキャストを生成し、このブロードキャストを受信すると、データの提示や保存などの操作をタイムリーに行うことができる.バッテリの電力量が変化すると、システムはブロードキャストを生成し、このブロードキャストを受信すると、電力量が低いときにユーザーに進捗状況をタイムリーに保存するように通知することができます.Androidの放送メカニズムは非常に優れており、開発者が直接操作する必要があることが多く、放送を待つだけで自分に伝えることができ、開発の作業量と開発サイクルを大幅に削減しています.アプリケーション開発者としては、Androidシステムが提供する開発の利器を把握する必要があります.それはBroadcastReceiverです.
BroadcastReceiver簡単に使用
最初のステップは、まず私たちが完成する効果を見てみましょう.新しいプロジェクトを作成し、activityを作成し、ボタンを追加して、作成したブロードキャストクラスにブロードキャストを送信します.
ステップ2で作成したMyReceiverコードは次のとおりです.
package com.example.learnbroadcastreceiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("      ");
    }

}

ステップ3では、activityページのボタンにイベントを追加し、ボタンはMyReceiverにメッセージを送信します.
    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.button1:
            sendBroadcast(new Intent(this, MyReceiver.class));
            break;
        }
    }

4つ目はMyreceiverに登録する必要がありますAndroidManifest.xmlでアプリケーションラベルの下にある場合、
        <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true">
        </receiver>

ステップ5では、コードを実行し、receiverがメッセージを正常に受信しました.
BroadcastReceiverの登録とログアウト
この時点でAndroidManifestを削除するとxml,BroadcastReceiverの構成では,通信がうまくいかない.(上のステップ4)
詳細については、以下を参照してください.http://blog.csdn.net/liuhe688/article/details/6955668動的バインドと解除の使用法を終了します
第一歩は、ページに2つのボタン【バインド】、【バインド解除】を追加します.
第2のステップは、ボタンに時間を増やす方法であり、コードは以下の通りである.
package com.example.learnbroadcastreceiver;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button1).setOnClickListener(this);
        findViewById(R.id.button2).setOnClickListener(this);
        findViewById(R.id.button3).setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.button1:
// sendBroadcast(new Intent(this, MyReceiver.class));
            Intent intent = new Intent("com.example.learnbroadcastreceiver.intent.action.MyReceiver");
            sendBroadcast(intent);
            break;
        case R.id.button2:
            if(myReceiver == null){
                myReceiver = new MyReceiver();
                registerReceiver(myReceiver, new IntentFilter("com.example.learnbroadcastreceiver.intent.action.MyReceiver"));
            }
            break;
        case R.id.button3:
            if(myReceiver != null){
                unregisterReceiver(myReceiver);
                myReceiver = null;
            }
            break;
        }
    }

    private MyReceiver myReceiver = null;

}

コアコード32-49行は、それぞれ送信、バインド、デバインド、3つの操作の使い方です.
バインドとバインド解除の操作が完了しました.