Android感知当前App应用处于前台(可见)或后台(不可见)简洁规范的解决方案
Android感知当前App应用处于前台(可见)或后台(不可见)简洁规范的解决方案
判断当前App是否处于前台(可见)或后台(不可见)附录1是一种解决方案。然而不够简洁,也是在过去一段时间比较稳定的解决方案。现在谷歌官方推出了LifecycleObserver和与Android生命周期相关的Lifecycle维护和管理方案,那么现在判断App处于前台和后台的解决就简洁多了,如代码:
package zhangphil.test; import android.app.Application; import android.arch.lifecycle.Lifecycle; import android.arch.lifecycle.LifecycleObserver; import android.arch.lifecycle.OnLifecycleEvent; import android.arch.lifecycle.ProcessLifecycleOwner; import com.orhanobut.logger.AndroidLogAdapter; import com.orhanobut.logger.Logger; public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); //Logger初始化。 Logger.addLogAdapter(new AndroidLogAdapter()); ProcessLifecycleOwner.get().getLifecycle().addObserver(new MyLifecycleObserver()); } public class MyLifecycleObserver implements LifecycleObserver { //App处于前台可见状态。 @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) public void create() { System.out.println("create"); } @OnLifecycleEvent(Lifecycle.Event.ON_START) public void start() { System.out.println("start"); } @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void resume() { System.out.println("resume"); } //此后App进入不可见状态/后台 @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) public void pause() { System.out.println("pause"); } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) public void stop() { System.out.println("stop"); } } }
需要引入依赖:
compile "android.arch.lifecycle:extensions:1.1.1" annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
附录:
1,《Android判断当前App应用处于前台(可见)或后台(不可见)》链接:https://blog.csdn.net/zhangphil/article/details/80769331
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
[转载]Android性能优化来龙去脉总结
转载来自这里 以下是本人在工作中对经历过的性能优化的一些总结,依据故事的发展路线,将其分为了5个部分,分别是:常见的性能问题;产生性能问题的一些可能原因;解决性能问题的套路;代码建议及潜在性能问题排查项。 image.png 如看不清大图,下文会有拆解 一 首先,我们先了解一下都有哪些性能问题 image.png 1、内存泄露。 通俗来讲,内存泄露不仅仅会造成应用内存占用过大,还会导致应用卡顿,造成不好的用户体验,至于,为什么一个“小小的”内存泄露会造成应用卡顿,我不得不拿这幅图来说说话了。 image.png 没错,这就是Android开发童鞋需要了解的Generational Heap Memory模型,这里我们只关心当对象在Young Generation中存活了一段时间之后,如果没被干掉,那么会被移动到Old Generation中,同理,最后会移动到Permanent Generation中。那么用脚想一想就知道,如果内存泄露了,那么,抱歉,你那块内存随时间推移自然而然将进入Permanent Generation中,然鹅,内存不是白菜,想要多少就有多少,这里,因为沙盒机制的...
- 下一篇
Android多线程之HandlerThread源码解析
想要了解 HandlerThread 的工作原理需要先对 Android 系统中以 Handler、Looper、MessageQueue 组成的异步消息处理机制有所了解,如果你还没有这方面的知识,可以先看我写的另一篇文章:Handler、Looper与MessageQueue源码解析 一、概述 先来了解下 HandlerThread 的几个特性 HandlerThread 继承于 Thread,本身就是一个线程类 HandlerThread 在内部维护了自己的 Looper 对象,所以可以进行 looper 循环 创建 HandlerThread 后需要先调用 HandlerThread.start() 方法再向其下发任务,通过 run() 方法来创建 Looper 对象 通过传递 HandlerThread 的 Looper 对象给 Handler 对象,从而可以通过 Handler 来向 HandlerThread 下发耗时任务 二、使用方式 再来看下 HandlerThread 的使用方式 创建 HandlerThread 并调用 start() 方法,使其在子线程内创建 Lo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6