【Android】2015.09.08 第一行代码 Day6 Count:8

来源:互联网 发布:网络喷子到底是哪些人 编辑:程序博客网 时间:2024/05/29 04:00
-----------------------------------------------
第一行代码
Day6
第五章
Broadcast
-----------------------------------------------
Questions:
1. intent立flag到底是干嘛,它的default值到底是什么?
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
删掉会报错:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

2. 不设置就是Null? 我能明白这玩意儿是设置窗口类型,但是它的默认值到底是什么?
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
删掉会报错:
java.lang.RuntimeException: Unable to start receiver com.smile.broadcastbestpractice.ForceOfflineReceiver: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

Points:
1. Broadcast
把握好两个方面:
Send:
全局广播无序发: this.sendBroadcast(intent);
全局广播有序发(配合优先级): this.sendOrderedBroadcast(intent,null);
本地广播:localBroadcastManager.sendBroadcast(intent);

Receiver:
两个参数:过滤器 —> IntentFilter.addAction() && 接收器 —> BroadcastReceiver
全局广播静态接收:(这样即使程序没有启动起来也可以实现接受,做出动作)
<receiver android:name=".MyBroadcastReceiver">
    <intent-filter android:priority="100">
        <action android:name="com.smile.broadcasttest.CC_CALL"/>
    </intent-filter>
</receiver>
本地广播动态接收:(能本地发送,程序一定启动了)
LocalBroadcastRecevier localBroadcastRecevier = new LocalBroadcastRecevier();
IntentFileter intentFilter new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
localBroadcastManager.registerReceiver(localBroadcastRecevier,intentFilter);

2.静态方法里用的都是静态变量,所以静态变量请在定义时初始化,而不是在构造函数中初始化,因为使用静态方法时不会调用构造函数的哦。 
0 0