生命周期只有十秒左右,如果在 onReceive() 内做超过5秒内的事情,就会报错 。
sendBroadcast发送普通广播:发送结束后就消失
sendBroadcast(intent, receiverPermission)第二个参数为权限,如果没有添加权限则不会接受到广播
如 :<uses-permission android:name="com.example.permission.RECEIVE_MY_BROADCAST">
sendOrderedBroadcast 有序广播 在注册的时候添加等级 new IntentFilter().setPriority(priority) 动态 静态都可以添加 -1000~1000数字越大级别越高,当等级相同时先注册的先得到广播 先得到广播的监听器可以中断广播 abortBroadcast();
sendStickyBroadcast异步广播:发送结束后会保留广播 使用removeStickyBroadcast清除广播
package b.r;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
public class mainAcitivty extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter();
filter.addAction("b.r.br");
br b = new br();
registerReceiver(b, filter);// 动态注册(如果动态注册是使用activity那activity调用finish()后该广播接收器失效,如使用application则一直存在。)
Intent in = new Intent("b.r.br");
// 发送广播
// sendBroadcast(in);
// 发送广播 他的最后一intent会被保留 如果是动态注册的注册前 发送的也能接受到
// 使用此方法需要 <uses-permission
// android:name="android.permission.BROADCAST_STICKY">权限
//发送广播
sendBroadcast(in);
//取消广播 动态注册的无法取消会报错
unregisterReceiver(b);
}
}
package b.r;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* @version 2012-7-20 上午11:25:51
**/
public class br extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 使用不同的Action来区分广播
if(intent.getAction().equals("b.r.br")) {
Toast.makeText(context, "接受广播", Toast.LENGTH_SHORT).show();
}
}
}
<!-- 静态注册 常驻型 -->
<receiver
android:name=".br">
<intent-filter>
<action
android:name="b.r.br" />
</intent-filter>
</receiver>
注意:如果在Activity之类的类里面写BroadcastReceiver,该类必须是static的
sendBroadcast发送普通广播:发送结束后就消失
sendBroadcast(intent, receiverPermission)第二个参数为权限,如果没有添加权限则不会接受到广播
如 :<uses-permission android:name="com.example.permission.RECEIVE_MY_BROADCAST">
sendOrderedBroadcast 有序广播 在注册的时候添加等级 new IntentFilter().setPriority(priority) 动态 静态都可以添加 -1000~1000数字越大级别越高,当等级相同时先注册的先得到广播 先得到广播的监听器可以中断广播 abortBroadcast();
sendStickyBroadcast异步广播:发送结束后会保留广播 使用removeStickyBroadcast清除广播