按 Home 键后运行的 Android 服务

2023-12-09

我有一个 Android 服务,是使用 StartService() 在应用程序的第一个 Activity 的 OnCreate 中创建的。我需要此服务在应用程序的整个生命周期中运行,即应用程序中的所有活动。但在用户按下主页键或后退按钮后,服务不应消耗资源。除了在所有活动的 onPause() 方法中停止服务之外,还有什么优雅的方法可以做到这一点吗?


您可以在onResume中调用bindService并在onPause中调用unbindService,而不是使用StartService。当没有打开的绑定时,您的服务将停止。

您需要创建一个 ServiceConnection 才能访问该服务。例如,这是一个嵌套在 MyService 中的类:

class MyService {
    public static class MyServiceConnection implements ServiceConnection {
        private MyService mMyService = null;

        public MyService getMyService() {
            return mMyService;
        }
        public void onServiceConnected(ComponentName className, IBinder binder) {
            mMyService = ((MyServiceBinder)binder).getMyService();
        }
        public void onServiceDisconnected(ComponentName className) {
            mMyService = null;
        }
    }

    // Helper class to bridge the Service and the ServiceConnection.
    private class MyServiceBinder extends Binder {
        MyService getMyService() {
            return MyService.this;
        }
    }

    @Override
    public IBinder onBind(Intent intent) {
        return new MyServiceBinder();
    }

    @Override
    public boolean onUnbind(Intent intent) {
        return false;  // do full binding to reconnect, not Rebind
    }

    // Normal MyService code goes here.
}

人们可以使用此帮助程序类通过以下方式访问该服务:

MyServiceConnection mMSC = new MyService.MyServiceConnection();

// Inside onResume:
bindService(new Intent(this, MyService.class), mMSC, Context.BIND_AUTO_CREATE);

// Inside onPause:
unbindService(mMSC);

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

按 Home 键后运行的 Android 服务 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 类型容器“Android 依赖项”引用不存在的库 android-support-v7-appcompat/bin/android-support-v7-appcompat.jar

    我在尝试在我的项目中使用 Action Bar Compat 支持库时遇到了某种错误 我不知道出了什么问题 因为我已按照此链接中的说明进行操作 gt http developer android com tools support libr
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 如何在android中获取Camera2 API的当前曝光

    In android hardware Camera旧的 我使用下面的代码获取当前曝光并获取它Camera Camera Parameters param mCamera getParameters currentExposure para
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview

随机推荐

  • 外部链接到选项卡、选项卡未更改、Bootstrap 3.3.5

    我的问题与这些问题非常相似 我试图使用链接来更改选项卡 但该链接仅更改选项卡内容 而不更改活动选项卡 最相似 Bootstrap 使用 url 链接到选项卡 非常相似 在 Bootstrap 3 中使用 onclick 显示带有外部链接的选
  • 如何知道android中的音频何时开始播放

    在我的应用程序中 我想在用户启动时获取音乐播放器的开始时间和停止时的结束时间 我不想在我的应用程序中启动任何音乐播放器 我只想跟踪设备中的用户活动 所以我希望我的应用程序在用户开始播放音乐时收到任何通知 我是否对音乐播放器启动和停止有任何意
  • Perl 按散列中的值对散​​列进行排序

    我认为我的想法是正确的 但我搞砸了一些语法 约定 因为我收到错误 全局符号 timeHash需要显式包名称 Code foreach key sort hashValueDescendingNum keys timeHash print t
  • 图像/按钮上的文字

    如何使用 html css 在图像 按钮上制作文本 例如 我有一个按钮 登录按钮 我希望将文本 登录 放置在该按钮上 文本应位于图像 按钮的中心 您可以简单地设置background image相关财产button 或其他元素 如果您使用代
  • 在Java中将字符串转换为双精度型

    我怎样才能转换String例如 12 34 to a double在Java中 您可以使用Double parseDouble 转换一个String to a double String text 12 34 example String
  • window.history.pushState 不会回到历史记录中

    我在尝试 History pushstate 事件时遇到了一些问题 我将其设置为页面的 url 将是通过 AJAX 加载的页面的实际 URL 并且效果很好 我知道它应该自动创建历史记录 加载之前加载的页面 不幸的是 帽子并没有发生 当我点击
  • 密码存储,hash() 与 sha-512 或 crypt() 与河豚 (bcrypt)?

    这是我当前在 PHP SQL 项目中的密码哈希过程 从 dev urandom 中获取 512 位的每用户盐 除了最终哈希值之外 还存储在用户的数据库记录中 从 dev urandom 中取出存储在文件系统中的 512 位 pepper 这
  • 从 $_GET/$_POST 获取信息并将其保存到数据库的做法?

    当涉及到从 get post 获取信息并将信息保存到数据库时 当今的最佳实践是什么 数据是否仍像以前一样进行转义 或者是否还有其他做法 另外 HTMLPurifier 可以用在什么地方呢 我目前正在使用它来过滤富文本 切勿将 GET 中的数
  • 调试 .NET 程序集绑定又名查找使用的 dll 以及原因

    我们在运行时加载的引用 dll 上遇到了一些神秘的版本不匹配问题 错误如 无法加载文件或程序集 X 或其依赖项之一 找到的程序集的清单定义与程序集引用不匹配 HRESULT 异常 0x80131040 有没有办法调试程序集绑定 换句话说 我
  • JQuery 结合 $(document).ready 和 $('DropDown').change 声明

    我想运行一个函数 function myFunction 关于活动 document ready and如果某个下拉菜单发生变化 myDropDown change 有没有一个好的方法来合并这个声明 这样我就不需要两次单独的调用myFunc
  • redactor.js PastePlainText - 但需要按钮来粘贴 html

    我们的大多数客户抱怨从 Word 到我们的 redactor js 富文本编辑器字段的格式设置 我们升级为使用pastePlainText 设置 这似乎效果很好 然而 有些客户仍然需要将 html 粘贴到富文本框中 我们使用插件在工具栏上添
  • 在 Bash 中否定多个条件

    我意识到这是一个简单的问题 但由于 bash 中严格的语法要求 我发现很难得到答案 我有以下脚本 if z 1 z 2 then echo both arguments are set fi 当我不带参数运行它时 我得到以下输出 test
  • SQL Server:并发线程可以更新同一行吗?

    我有一个具有此 UPDATE 查询的存储过程 UPDATE TOP 1 Batch tbl SET locked 1 OUTPUT inserted batchId INTO batchId FROM Batch tbl WHERE loc
  • ASP.NET MVC 中的所有内置 ActionResults

    我正在寻找 ASP NET MVC 控制器中可用的内置 第 3 方将是一个额外的 ActionResults 列表 到目前为止 我发现了以下内容 ContentResult this Content ActionResult this Vi
  • 301 重定向与 DNS 更改:终止 301 重定向并更新子域的 DNS 是否安全?

    我有一个在子域上运行的站点 该子域已迁移到新服务器和新域名 为了保留搜索积分 我知道 301 重定向是处理迁移转换的正确方法 营销部门提到的 301 重定向是我从未听说过的 从技术角度来看 我不明白你必须维持重定向多长时间 有人可以解释一下
  • C++静态库中的共享全局变量:Linux

    在 C 中 静态库 A 定义了一个全局变量 foo B 和 C 是两个动态库 都依赖于 A 因此与 A 链接 静态 然后B和C最终加载在同一个进程中 例如 应用程序负载 B 和 C 如果我们在 Windows 环境中 我们将获得 foo 的
  • 如何检查访问者的IP地址是否仍然有效或在线?

    是否可以使用 IP 地址检查访问者是否仍然在线 我已经创建了一个 javascript 和 php 来检查访问者的 IP 地址 当他们使用 onLoad 和 onBeforeUnload 事件打开我的页面之一时 但在某些情况下 我的脚本无法
  • PHP 返回循环结果

    我对编码和 PHP 世界都是新手 想知道如何使用return循环时 例如我想返回 显示 1 10 但不使用 echo start 1 end 11 for start start lt end start start 1 echo star
  • 在 C 中将字节转换为 Int / uint

    我有一个无符号字符数组 248 充满字节 如 2F AF FF 00 EB AB CD EF 这个数组是我的字节流 我将来自 UART RS232 的数据存储为缓冲区 现在我想将字节转换回 uint16 和 int32 在 C 中 我使用
  • 按 Home 键后运行的 Android 服务

    我有一个 Android 服务 是使用 StartService 在应用程序的第一个 Activity 的 OnCreate 中创建的 我需要此服务在应用程序的整个生命周期中运行 即应用程序中的所有活动 但在用户按下主页键或后退按钮后 服务