Android入门总结-广播

最近看了一下Android,只看书不总结一下,总感觉东西并没有放在脑子里,人过留名,雁过留声,遂写下这篇总结。

书本看的是《Android编程兵书》,但这篇总结的大纲是按照《第一行代码》的章节目录撰写的。两本书的内容结构大致相同,Android入门的话只看其中一本就够了。

Android中广播分为标准广播和有序广播。标准广播是一种完全异步执行的广播,所有的广播接收器几乎都会在同一时刻接收到广播,这也意味着标准广播是不能被截断的。有序广播是同步执行的广播,同一时刻只会有一个接收器能接收到这条广播,并且可以选择是否截断该广播。

动态注册广播

public class MainActivity extends Activity{
    private IntentFilter intentFilter;

    private NetworkChangeRecever networkChangeRecever;

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intentFilter = new IntentFilter();
        intentFilter.addActioin("android.net.conn.CONNECTIVITY_CHANGE");
        networkChangeRecever = new NetworkChangeRecever();
        registerReceiver(networkChangeRecever, intentFilter);
    }

    protected void onDestroy(){
        super.onDestroy();
        unregisterReceiver(networkChangeRecever);
    }

    class NetworkChangeRecever extends BroadcastReceiver{
        public void onReceive(Context context, Intent intent){
            ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            if(networkInfo != null && networkInfo.isAvailable()){
                Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
            }
            
        }
    }
}

静态注册实现开机启动

public class  BootCompleteReceiver extends BroadcastReceiver{
    
    public void onReceive(Context context, Intent intent){
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_SHORT).show();
    }
}




    
        
            
        
    

发送自定义广播

Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");

发送标准广播:sendBroadcast(intent)
发送有序广播:sendOrderedBroadcast(intent, null)
可在intent-filter中设置广播接收器的优先级
截断广播:abortBroadcast();

使用本地广播
为解决安全性问题,引入了本地广播机制,即发出的广播只能在APP内容传递。主要是使用了一个LocalBroadcastManager对广播进行管理,并提供发送和注册广播接收器的方法。
优势:防止机密数据泄露,高效

广播的最佳实践:实现强制下线功能

Tips
1、广播接收器中是不允许开启线程的,广播接收器多用于创建状态栏通知、启动一个服务

2、intent添加FLAG_ACTIVITY_NEW_TASK标志的意义?

你可能感兴趣的:(Android入门总结-广播)