废话
今天我来学习下关于广播的更多知识,广播的基本创建,包括动态注册,静态注册,以及本地广播我们在之前的文章中都已经学会了
Android基础知识:Broadcast Receiver(1)初识广播
Android基础知识:Broadcast Receiver(2)系统广播
Android基础知识:Broadcast Receiver(3)本地广播
我还可以学习下广播的更多知识,比如在广播的接收方法里,我们能做什么,需要注意什么,还有静态注册的广播能不能启动Activity,下面我们一一来学习
onReceiver
广播接收器里的onReceiver方法是在接收到广播后做的处理,我们可以在这里做一些处理,比如:
- 我们注册了back键的广播,那么我们就可以在此处处理逻辑,让app需要点击两次back键后才退出
- 我们注册了home键的广播,我们可以在点击home键后开启一个服务,一般音乐播放器都是在用户点击home键之后开启一个前台服务,所有我们能在应用退出后还能听到音乐
- 我们可以注册开机广播,当用户开机后就启动我们的app,达到开机自启动的效果,不过开机广播需要静态注册才生效,这也符合我们的一般逻辑
- 我们可以注册解锁屏广播,记录解锁屏的时间,这也就可以记录用户使用手机的时间和频率,甚至是使用习惯,从而更好地根据用户习惯来推荐一些内容
还有很多广播,我们可以用来做很多有意思的app,只要你能想到
注意
动态注册的广播:运行在主线程,可以进行UI操作,但是不能做耗时操作,不然会发生ANR
静态注册的广播:不能进行UI操作
启动Activity
我们静态注册了一个开机广播,我们想在手机开机的时候就启动我们的某个Activity,那么应该怎么办呢,和Service一样
Android基础知识:Service(4)更多知识
我们可以这样做:
Intent intent=new Intent(this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
同样,它和在Activity中启动Activity唯一的不同就是多了一句
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
这个方法是new一个栈存放Activity,这样我们就能启动Activity了
如果我们之前就启动过MainActivity,那么此时点击任务键可以看到有两个MainActivity,这是因为这两个Activity是在不同的栈,我们想处理这种情况可以在AndroidManifest中加上android:excludeFromRecents="false"
今天我们就到这里。
网友评论