《第一行代码》学习笔记--Android入门(五、六)

五、广播

1.标准广播(Normal)---异步执行,各接收器同时收到,无法截断

有序广播(Ordered)--同步执行,有先后顺序,优先级高的可以截断

2.动态建立broadcasts receiver : 

新建类继承BroadcastReceiver 并重写onReceiver()方法。

PS:动态注册的广播接收器一定要取消注册

3.发送广播

发送标准广播流程:

定义广播接收器,新建类继承BroadcastReceiver,并在AndroidManifest.xml中进行注册:

    <application
……
        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter >
                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
            </intent-filter>
        </receiver>
    </application>


com.example.broadcasttest.MY_BROADCAST是广播的值,可以在布局中设置按钮,然后修改MainActivity.java 设置按钮点击事件,在onClik()方法中加入:

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

首先构建Intent对象,传入创博值,调用sendBroadcast(intent)方法发送消息,所有值一样的广播接收器都会收到消息。


发送有序广播流程:

sendBroadcast(intent) 方法改成  -->  sendOrderedBroadcast(intent, receiverPermission) 方法,第一个参数是Intent,第二个参数是与权限有关的字符串

在注册时设定广播接受的优先级 android:priority:

        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter android:priority="100">
                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
            </intent-filter>
        </receiver>


然后可以在类中的 onReceive 用 abortBroadcast() 方法截断广播。


4.本地广播

为了提高安全性,使用本地广播,只能在应用程序内部传递,也只能接受本应用的广播。

流程跟动态广播类似。不过首先是通过LocalBroadcastManager.getInstance获得实例,然后注册时用localBroadcastManager.registerReceiver,发送用localBroadcastManager.sendBroadcast(intent);  

PS:本地广播是无法通过静态注册的。

5.实例

在编辑书里的实例的时候,自己打了一遍代码,编译是没错的,但是真机或者模拟器Run的时候就报错,出现这样的错误:

ViewServerDevice]Unable to debug device:

hierarchyviewer]Missing forwarded port for 

hierarchyviewer]Unable to get the focused window from device 

分析这个错误报告,怀疑是找不到视图的焦点,开始百度并检查错误,终于发现是一个小地方打错了:

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.id.login); //导致错误的原因
		setContentView(R.layout.login);   
				…………


哈哈略坑,但是自己找出问题并解决的感觉还是挺爽的~这是在AndroidManifest.xml里注册的主活动的onCreate方法,在这里需要加载布局,如果布局文件路径错的话当然加载不了,也聚焦不了啦。


6.版本控制工具Git

首先当然是下载,我是Windows坏境,下载地址为点击打开链接

个人感觉科学上网以后github速度会快许多,推荐shadowshocks 我用过来HK的服务器最顺。

到项目路径下建立一个代码仓库(Repository)

$git init

在项目根目录下生成一个隐藏的.git文件夹。

提交本地代码,add把想提交的代码添加进来,然后commit执行提交操作 

$git add .

点表示添加全部文件,也可以单个文件或文件夹

$git commit -m "name."

-m必须要有。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值