美文网首页
Android基础知识:Broadcast Receiver(4

Android基础知识:Broadcast Receiver(4

作者: JYangkai | 来源:发表于2019-01-03 20:55 被阅读0次

    废话

    今天我来学习下关于广播的更多知识,广播的基本创建,包括动态注册,静态注册,以及本地广播我们在之前的文章中都已经学会了
    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"

    今天我们就到这里。

    相关文章

      网友评论

          本文标题:Android基础知识:Broadcast Receiver(4

          本文链接:https://www.haomeiwen.com/subject/rwtbkqtx.html