简单检查 Android 应用程序后台

2023-12-13

我通过从每个活动的 onResume() 调用 plusActivity() 和从 onPause() 调用 minusActivity() 来跟踪我的应用程序中当前可见的活动数量(应该是 0 或 1)

plus/minusActivity 位于我的 myApplication 类中,该类扩展了 Application。

这些方法递增和递减计数器。每次调用 minusActivity() 时,它还会发布一个在 2 秒后运行的可运行对象。当可运行执行时,如果在 2 秒前最后一个活动关闭后另一个活动尚未打开(例如 foregroundedActivities == 0 因为 2 秒内没有调用 plusActivity() ),那么它会调用一个方法来执行一些需要发生的事情当背景时。

这是一个片段:

public void plusActivity(){
    foregroundedActivities++;
}

public void minusActivity(){
    foregroundedActivities--;
    timingHandler.removeCallbacks(checkBackgroundTask);
    timingHandler.postDelayed(checkBackgroundTask, 2000);
}

public void checkIfBackgrounded(){
    if(foregroundedActivities==0){
        doWhateverWeDoWhenBackgrounded();
    }
}

public Runnable checkBackgroundTask=new Runnable(){

    @Override
    public void run() {
        checkIfBackgrounded();
    }

};

鉴于此进程运行的时间范围为 2 秒,并且不涉及对 Activity 的回调,这是否是完成后台检测的可接受方法,或者我真的需要使用 Service 来完成所有这些工作吗?这似乎有很多开销,而且我看不到任何好处,因为这似乎工作正常。


你的解决方案可能有效,但我不知道。

您也许可以使用广播接收器。如果您使用 BroadcastReceiver,则可以在活动执行 onPause() 时发出 Intent 以及加号/减号代码。 BroadcastReceiver 将能够再次执行您的应用程序...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单检查 Android 应用程序后台 的相关文章

  • 在 Android 8 (Oreo) 的 Webview 中获取 Resources$NotFoundException

    我正在我的应用程序的 WebView 中加载网站的 URL 该网站获取用户的基本详细信息 我正在活动中加载 WebView 但是 当 Android 8 用户点击网站的下拉菜单时 应用程序会抛出以下错误 请注意 此 WebView 在 An
  • Android Studio 拒绝运行 main()

    重现步骤 在Android Studio中启动一个新项目 使用最新更新 创建一个新类并像往常一样添加 main 右键单击类以运行 main 作为测试 package test public class Test public static
  • 在 Android 中存储照片相关数据的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要为我的应用程序存储一些照片相关信息 据我所知 您可以向图像内容提供商读取 写入 GPS 位置和图像描述 我还需要添加用于云同步的字段 标志
  • 运行带有 QVGA 的 Android 1.6 的模拟器上的缩放控件

    我正在模拟器中的不同 AVD 设置上测试我的应用程序 并在仅使用 QVGA 分辨率 lcd 密度 120 的 Android 1 6 上的 MapView 中遇到缩放控件问题 当点击屏幕以显示缩放控件时 放大 加号显示得比缩小大得多 这似乎
  • 如何发送超过160个字符的短信?

    如何在 Android 中发送大短信 我用了 SmsManager sms SmsManager getDefault sms sendTextMessage contactNos j null msgs i sentPI delivere
  • ViewPager - 无限滚动? [复制]

    这个问题在这里已经有答案了 我需要在屏幕上显示文本或图像 文本或图像 一个请求总共 10 个 是通过 HttpClient 从我的服务器获取的 当用户向右滑动并到达第 8 张幻灯片时 我需要从服务器获取下一组 10 个文本或图像 使用 Vi
  • 如何更新不是我自己创建的 APK 的版本

    我是 Android 开发新手 我正在使用 x 平台开发工具 它为我构建并签署 APK 该工具有一个错误 它不会使用我指定的版本代码生成 APK 所有生成的 APK 都是版本 1 0 我想解压APK 编辑版本代码 然后辞职并重新打包 它最初
  • 如何刷新 Android 上的 MediaStore?

    这最初是 Android 论坛上的一个一般用户问题 然而 它必然成为一个编程问题 这是我的问题 Android 有一个服务 MediaScanner 每当 我相信 SD 卡卸载和重新安装时它都会在后台运行 该服务收集卡上所有媒体文件的数据
  • 安卓写入文件

    经过几周的不编程之后 我决定完成我的应用程序 上次我无法进行文件写入和读取 现在我想做 我也许可以使用数据库 但这似乎容易得多 我已经发现this http narenst wordpress com 2010 01 25 android
  • 如何平移画布并仍然在正确的位置获取触摸事件

    我正在尝试创建一个自定义 AbsListView 覆盖 ListView GridView 和 HeaderGridView 上的相同内容 它将根据外部因素 在布局上移动的其他内容 重新定位其所有绘图和触摸事件 填充在这里不是一个选项 因为
  • Android 4.4 (kitkat) 版本中的短信阻止和允许问题

    我们在 Google Play 上推出了短信拦截应用程序 如果满足任何阻止条件 它就会阻止短信 否则我们允许短信发送到本机收件箱 它在除 android 4 4 Kitkat 之外的所有版本上都运行良好 我们尝试实现适用于 4 4 的新短信
  • 如何根据 ListActivity 中长按的项目设置特定的上下文菜单?

    我有一个列表活动 我选择手动添加第一个项目 即 添加新项目 我已经注册了整个列表视图的上下文菜单 使用registerForContextMenu getListView 直接进入onCreate 当建立上下文菜单时 系统调用onCreat
  • GPSTracker 类不工作

    我尝试在我的应用程序中使用我在网上找到的 GPSTracker 类 并且我之前让它工作过 但现在似乎莫名其妙地不起作用 public class GPSTracker extends Service implements LocationL
  • 如何在手机解锁时显示消息

    我想制作一个应用程序 当用户解锁他 她的 Android 手机时会显示一条消息 我不知道这是否可能 如果有人有办法做到这一点 请您指出正确的方向 Only android intent action USER PRESENT action
  • 制作教程(教练标记)叠加层。需要帮助根据另一个视图的位置移动视图

    你好 我正在尝试在教程上做一个教练标记 主程序 java public class Main extends Activity private Button button1 private int x Override public voi
  • 带有选项卡和 ActivityGroup 的后退按钮行为

    我有一个活动 Main 显示如下选项卡 private void initTabs mTabHost getTabHost The activity TabHost Intent intent intent new Intent setCl
  • 为什么 CheckBox 检查不能以编程方式与 Kotlin 一起使用?

    我想这个问题以前可能有人问过 但这个问题也发生在我身上 所以我在这里再次询问 看看我们能否找到解决方案 所以基本上问题是以编程方式检查复选框不与 Kotlin 代码一起工作 为了解释一下 我正在分享我的代码和问题的屏幕截图 filterCo
  • Android SearchView 自定义

    我是 Android 新手 我被困在一些我认为很简单但我很困惑的事情上 我需要不在操作栏 工具栏中而是在我的相对布局中创建自定义 searchView 问题是我不知道如何自定义背景 文本输入颜色 XML 中的搜索图标颜色 或者只是它们的属性
  • 从包中获取参数

    我正在尝试将参数从我的活动传递到片段 并且我正在使用以下代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedInstanceSt
  • android 以编程方式在单选组按钮之间添加填充

    我有一个 xml 格式的单选组 按钮是通过编程生成的 如何以编程方式添加按钮之间的间距 我以为是这样的LayoutParams但我的对象没有明显的setPadding or setMargins方法 这就是我正在尝试的 RadioButto

随机推荐