Android 廣播機制 BroadCastReceiver

來源:互聯網
上載者:User
1.注意廣播發起的動作,以及需要在AndroidMainfest.xml檔案中去註冊這個廣播,並且這個廣播需要用intent-filter進行過濾。 

2.系統級的廣播,調用一樣,只是需要在AndroidMainfest.xml檔案中去註冊這個廣播,並且添加系統級過濾條件。 

3.廣播也可以在代碼中註冊,但需要注意的是註冊的同時不要忘記去登出這個廣播:

一般是在Activity.onResume中去註冊這個廣播:

IntentFilter filter = new IntentFilter();

BroadcastReceiver receiver = new BroadcastReceiver();

registerBroadcast(receiver,filter); 

一般是在Activity.onPause中去登出這個廣播

unRegisterBroadcast(receiver); 

 

另外廣播盡量在代碼中註冊與銷毀,這樣可以節省裝置電池的使用,如果註冊在AndroidMainfest.xml中,則這個廣播一直存在,且不便於管理,耗電。 

 

 

 

package com.king.android.controls;

import com.king.android.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**

 * 描述:發起廣播執行個體
 *  * 作者:Andy.Liu
 * 時間: 2012-7-18  下午11:57:20
 **/
public class BroadCastReceiverActivity extends Activity {
    public static final String MY_BROADCAST ="com.king.android.MY_BROADCAST";
    public static final String MY_WORD ="myword";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btnSend = (Button) findViewById(R.id.btn_voice);
        btnSend.setText("發廣播");
        btnSend.setVisibility(View.VISIBLE);
        btnSend.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(MY_BROADCAST);
                intent.putExtra(MY_WORD, "my name is kobe");
                sendBroadcast(intent);
            }
        });
    }
}

package com.king.android.controls;

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

/**

 * 描述:接收廣播
 * 作者:Andy.Liu
 * 時間: 2012-7-18  下午11:58:14
 **/
public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String msg = intent.getStringExtra(BroadCastReceiverActivity.MY_WORD);
        Toast.makeText(context, "已經接收廣播了============="+msg,Toast.LENGTH_LONG).show();
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.