android 监听app前后台切换

这篇具有很好参考价值的文章主要介绍了android 监听app前后台切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求是统计app使用时长,要求在按home键的时候也算一次完成的使用记录。刚开始打算采用监听home键点击,寻求的方法是监听系统广播。

   class InnerRecevier extends BroadcastReceiver {
      final String SYSTEM_DIALOG_REASON_KEY = "reason";
      final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
      final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";

      @Override
      public void onReceive(Context context, Intent intent){
         String action = intent.getAction();
         if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
            String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
            if (reason != null) {
               if (mListener != null){
                  if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)){
                     // 短按home键
                     mListener.onHomePressed();
                  }else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)){
                     // 长按home键
                     mListener.onHomeLongPressed();
                  }
               }
            }
         }
      }

可以实现监听home键被点击,但有一个弊端就是点击home键app切换到后台后,在使用别的app点击home键 自己的app还是会收到这个广播,因为这是系统级的广播,这里处理逻辑就比较麻烦,要写一些判断等,还有另外一种可以直接监听app切换前后台,采用下面这种方式能简单完美解决我的需求。

    private int activityAount = 0;//当前Acitity个数

    private boolean inItOnlineTime= true;//是否重新计时app在线时间
    /**
     * Activity 生命周期监听,用于监控app前后台状态切换
     */
    ActivityLifecycleCallbacks activityLifecycleCallbacks = new ActivityLifecycleCallbacks() {
        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        }

        @Override
        public void onActivityStarted(Activity activity) {
            activityAount++;
            if(inItOnlineTime){
               //app切换到前台了,重新计时
                createAppOnlineTime();
                inItOnlineTime = false;
            }
        }

        @Override
        public void onActivityResumed(Activity activity) {
        }
        @Override
        public void onActivityPaused(Activity activity) {
        }

        @Override
        public void onActivityStopped(Activity activity) {
            activityAount--;
            if (activityAount == 0) {
                //app切换到后台了,提交时间数据
                postAppOnlineTime();
                inItOnlineTime = true;
            }
        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
        }
        @Override
        public void onActivityDestroyed(Activity activity) {
        }
    };
  	//注册这个监听
     registerActivityLifecycleCallbacks(activityLifecycleCallbacks);

把上面代码写在Application中,在Application的onCreate的方法中注册监听,在使用app的时候无论在任何页面当点击home键的时候都会触发监听,点击返回键退出app 和menu键也会触发app切换到后台的监听。文章来源地址https://www.toymoban.com/news/detail-509294.html

到了这里,关于android 监听app前后台切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于单片机的前后台系统

    单片机裸机系统,通常又被称为前后台系统。 百度百科中,对前后台系统有一段解释: ​前后台系统,即计算机前后台系统,早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备,在这种情况下,通常把嵌入式程序分成两部分,即前

    2024年02月12日
    浏览(29)
  • 一个面向MCU的小型前后台系统

    JxOS面向MCU的小型前后台系统,提供消息、事件等服务,以及软件定时器,低功耗管理,按键,led等常用功能模块。 gitee仓库地址为(复制到浏览器打开): 在此基础上实现了基于433的简单无线网络功能。 此项目的 设计思想 是:功能模块与硬件高度解耦,提高代码模块的可

    2024年02月09日
    浏览(33)
  • 大文件分片上传的实现【前后台完整版】

    在一般的产品开发过程中,大家多少会遇到上传视频功能的需求,往往我们采用的都是对视频大小进行限制等方法,来防止上传请求超时,导致上传失败。这时候可能将视频分片上传可以对你的项目有一个小小的体验优化。 本片文章前端是vue,后台基于PHP进行的分片上传,需

    2024年02月10日
    浏览(42)
  • 【jenkins部署】一文弄懂自动打包部署(前后台)

    软件开发中,会分多个环境,开发环境、测试环境、预发布环境、生产环境,软件部署如果是纯人工一个个通过jar的方式, 会有如下问题: 服务器过多,容易出错 修改配置,可能会存在未修改到位的情况 服务器部署权限一般只有开发服务器人才有权限,涉及到服务器的安全

    2024年02月08日
    浏览(44)
  • centos配置nginx+node前后台+mongodb

    centos 环境下安装

    2024年02月11日
    浏览(39)
  • 一套前后台全部开源的H5商城送给大家

    博主给大家推荐一套全部开源的H5电商项目 waynboot-mall 。由博主在2020年开发至今,已有三年之久。那时候网上很多的H5商城项目都是半开源版本,要么没有H5前端代码,要么需要加群咨询,属实恶心。于是博主决定自己开发一套完整的移动端H5商城,包含一个管理后台、一个前

    2024年02月02日
    浏览(72)
  • 前后台传递参数中出现+、-、=、%、&、#、空格等字符的解决思路

    一、描述问题 前后台传输数据多样化,可能会出现特殊字符的情况,比如传递的参数中含有+、空格、=、%等字符,遇到这样的情况我们该如何解决呢? 二、问题分析 前后台特殊字符对其编码,原因可能是这些特殊字符对于前后台传递参数的时候,有其特殊的用途,比如url中

    2024年01月17日
    浏览(69)
  • 【SpringMVC】统一异常处理 前后台协议联调 拦截器

    1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的 getById 方法 重新启动运行项目,使用PostMan发送请求,当传入的id为1,则会出现如下效果: 前端接收到这个信息后和之前我们约定的格式不一致,这个问题该如何解决? 在解决问题之前,我们

    2024年02月11日
    浏览(40)
  • 【SpringMVC】统一异常处理 前后台协议联调 拦截器(文末赠书)

    1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的 getById 方法 重新启动运行项目,使用PostMan发送请求,当传入的id为1,则会出现如下效果: 前端接收到这个信息后和之前我们约定的格式不一致,这个问题该如何解决? 在解决问题之前,我们

    2024年02月09日
    浏览(30)
  • 基于springBoot + Vue电影售票系统分前后台【完整源码+数据库】

    本项目是一套基于springBoot + Vue的电影售票系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! 后端:SpringBoot+Mysql+MyBatis+maven 前端:Vu

    2024年02月03日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包