使用Intent发送广播

使用Intent来广播事件java

      能够对Intent的动做,数据和分类进行设置,从而使BroadcastReceiver可以精确的肯定他们的需求。在这种方案中,Intent动做字符串能够用来标示广播的时间,因此他应该是可以标示事件的惟一字符串。android

  若是但愿Intent中包    含数据,那么能够使用Intent的data属性执行一个URI。也能够包含extas来添加额外的基本值。微信

    1)继承BroadCastReceiver写广播接收器
app

package com.roc.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.widget.Toast;

public class LifeformDetectedReceiver extends BroadcastReceiver {
	public static final  String EXTRA_LIFEFORM_NAME = "EXTRA_LIFEFORM_NAME";
	public static final  String EXTRA_LATITUDE = "EXTRA_LAITODE";
	public static final  String EXTRA_LONGITUDE = "EXTRA_LONGITUDE";
	public static final  String ACTION_BURN = "com.paad.alien.action.BURN_IT_WITH_FIRE";
	public static final  String NEW_LIFEFORM = "com.paad.alien.action.NEW_LIFEFORM";
	@Override
	public void onReceive(Context context, Intent intent) {
		Uri data = intent.getData();
		String type = intent.getStringExtra(EXTRA_LIFEFORM_NAME);
		double lat = intent.getDoubleExtra(EXTRA_LATITUDE, 0);
		double lng = intent.getDoubleExtra(EXTRA_LONGITUDE, 0);
		/**
		 * 执行更新内容,启动service 更新ui 或者使用notification manager 等操做
		 */
		Toast.makeText(context, "type"+type+" lat "+lat+" lng "+lng, Toast.LENGTH_LONG).show();
	}

}

2)接收广播的两种方式:ide

常驻型广播:学习

    指的是当应用程序关时,若是有信息发来,能够接收广播并作一些,更新ui,数据,启动服务等事情 指的是在Manifest中进行配置ui

    

 <receiver android:name="com.roc.receiver.LifeformDetectedReceiver">
                        <intent-filter >
                <action android:name="com.paad.alien.action.NEW_LIFEFORM"></action>
            </intent-filter>
 </receiver>

很是驻型广播:this

package com.example.android;

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

import com.roc.receiver.LifeformDetectedReceiver;

public class SendBroacastActivity extends Activity implements OnClickListener {
	public static final String NEW_LIFEFORM_DETECTED = "com.roc.test";
	private IntentFilter mIntentFilter;
	private LifeformDetectedReceiver mReceiver;
	private Button mBtn ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.start_receiver_layout);
		mBtn = (Button)findViewById(R.id.receiver_btn);
		mBtn.setOnClickListener(this);
		mIntentFilter = new IntentFilter(LifeformDetectedReceiver.NEW_LIFEFORM);
		mReceiver = new LifeformDetectedReceiver();
	}
	@Override
	protected void onResume() {
		super.onResume();
		registerReceiver(mReceiver, mIntentFilter);
	}
	@Override
	protected void onPause() {
		super.onPause();
		unregisterReceiver(mReceiver);
	}
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(LifeformDetectedReceiver.NEW_LIFEFORM);
		intent.putExtra(LifeformDetectedReceiver.EXTRA_LIFEFORM_NAME, "net");
		intent.putExtra(LifeformDetectedReceiver.EXTRA_LATITUDE, 1.45);
		intent.putExtra(LifeformDetectedReceiver. EXTRA_LONGITUDE, 1.56);
		sendBroadcast(intent);
	}
	
}

    当应用程序结束后,广播也随之销毁,接收不到任何信息 指的是registerReceiver(mReceiver, mIntentFilter);这样的注册方式,也称之为(动态注册)
spa

3)启动广播:.net

        @Override
	public void onClick(View v) {
		Intent intent = new Intent(LifeformDetectedReceiver.NEW_LIFEFORM);
		intent.putExtra(LifeformDetectedReceiver.EXTRA_LIFEFORM_NAME, "net");
		intent.putExtra(LifeformDetectedReceiver.EXTRA_LATITUDE, 1.45);
		intent.putExtra(LifeformDetectedReceiver. EXTRA_LONGITUDE, 1.56);
		sendBroadcast(intent);
	}

经过在onClick中的点击事件中的sendBroadCast来发送广播。


想要学习更多关于android开发方面的知识,请关注微信订阅号:android_develop

相关文章
相关标签/搜索