四大组件都运行在主线程中 广播接收者也是运行在主线程中 不能执行耗时操作 如果一定要执行耗时操作 必须开子线程
broadcastreceiver 用来接收 sendBroadCast方法 发出来的广播 可以通过intent传递数据 抽象类
广播特点 数据的传递方向 单向 调到固定的频率
作用范围有限 只在当前手机里有效 系统 把一些重要的操作 通过广播的形式通知给所有的应用
广播接收者案例_ip拨号器
①写一个类继承BroadCastRevceiver重写onReceive方法
1.public class DailReceiver extends BroadcastReceiver { 2. 3. @Override 4. public void onReceive(Context context, Intent intent) { 5. //获取用户输入的ip前缀 6. SharedPreferences sp = context.getSharedPreferences("info", Context.MODE_PRIVATE); 7. String prefix = sp.getString("prefix", "17951"); 8. //获取打电话的号码 9. String number = getResultData(); 10. System.out.println("打电话了"+number); 11. setResultData(prefix+number); 12. } 13.}
②清单文件中注册 receiver节点 通过intent-filter 指定当前广播接收者要处理的广播事件
1. <receiver android:name="com.itheima.ipdialer.DailReceiver"> 2. <intent-filter > 3. <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 4. </intent-filter> 5. </receiver>