博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1-AIII-Service实现开屏跳转到指定Activity
阅读量:5882 次
发布时间:2019-06-19

本文共 2433 字,大约阅读时间需要 8 分钟。

普通Service特性

1.startService方法启动,不关闭,则一直运行,即使退出了当前Activity

2.基于此可以实现音乐播放器的后台播放
3.基于此结合广播接收者可以实现开屏跳转到指定Activity、任意位置锁屏监听
3-1.在服务开启时注册开关屏的广播接收者,在服务结束时注消开关屏的广播接收者
3-2.每次开屏跳转到指定页面

Service实现开屏跳转到指定Activity.gif
1.ScreenService.java
public class ScreenService extends Service {    private static final String TAG = "ScreenService";    private ScreenReceiver receiver;    @Override    public IBinder onBind(Intent intent) {        Log.i(TAG, "onBind");        return null;    }    @Override//当服务第一次启动的时候调用    public void onCreate() {//在这个方法里面注册广播接收者        receiver = new ScreenReceiver();//[1]获取ScreenReceiver实例        IntentFilter filter = new IntentFilter(); //[2]创建IntentFilter对象        filter.addAction("android.intent.action.SCREEN_OFF");//[3]添加注册的事件        filter.addAction("android.intent.action.SCREEN_ON");        registerReceiver(receiver, filter);//[4]通过代码的方式注册        super.onCreate();    }    @Override//当服务销毁的时候调用    public void onDestroy() {        unregisterReceiver(receiver);//当actvivity销毁的时候  取消注册广播接收者        super.onDestroy();    }    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        Log.i(TAG, "onStartCommand");        return super.onStartCommand(intent, flags, startId);    }}
2.开关屏的广播接收者:ScreenReceiver
public class ScreenReceiver extends BroadcastReceiver {    private static final String TAG = "ScreenReceiver";    @Override    public void onReceive(Context context, Intent intent) {        //[1]获取到当前广播的事件类型        String action = intent.getAction();        //[2]对当前广播事件类型做一个判断        if ("android.intent.action.SCREEN_OFF".equals(action)) {            Log.i(TAG, "屏幕锁屏了");        } else if ("android.intent.action.SCREEN_ON".equals(action)) {            //每次开屏跳转到指定页面            context.startActivity(new Intent(context, MainActivity.class));            Log.i(TAG, "屏幕解锁了");        }    }}
3.注册服务:app/src/main/AndroidManifest.xml
4.Activity中开启服务:
public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        startService(new Intent(this, ScreenService.class));    }}

onCreate==>onStartCommand

其中onCreate只会执行1次每次启动都会执行onStartCommand


后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明

[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

3.联系我

QQ:1981462002

邮箱:
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
你可能感兴趣的文章
量子行走
查看>>
12月centos单词
查看>>
20172317 《程序设计与数据结构》 第二周学习总结
查看>>
文件格式相关开源项目
查看>>
java中goto语句!
查看>>
java内存模型二
查看>>
读书笔记-- --JavaScript王者归来
查看>>
吴忠军的Q友乐园主页
查看>>
吴忠军全民k歌主页
查看>>
mybaits 学习
查看>>
su: Authentication failure
查看>>
java继承(翻译自Java Tutorials)
查看>>
AndroidO bluedroid alarm 机制分析
查看>>
sublime text 3 + python配置,完整搭建及常用插件安装
查看>>
andorid 练习之黑名单
查看>>
[Python3网络爬虫开发实战] 1.6.1-Flask的安装
查看>>
con词根
查看>>
Lombok的使用
查看>>
ubuntu下配置NTP Server注意地方
查看>>
libxml2.so.2 No version information available
查看>>