为什么主活动关闭时远程服务会被销毁?

2023-12-22

我编写了一个 android 程序:有一个 UI 主要活动,并且它启动一个服务。该服务及时回调 UI 活动以更新视图。它工作正常,除了:如果活动关闭(使用 BACK)并再次启动,服务也将再次启动(服务播放音频文件,因此有两个重叠的声音)。 我使用带有 BIND_AUTO_CREATE 标志的 bindService 来启动并连接到服务。根据文档,只有当服务不存在时才应该创建服务,但显然它在第二次打开时会启动另一个实例。 我想要的只是当活动关闭时,服务继续运行,当活动再次打开时,它可以重新连接到服务。那可能吗?或者我只是误解了服务的用法?

尝试了更多: 在bindService Intent中使用ICountService(在.aidl中描述)而不是CountService。当 Activity 关闭时,会调用 onDestroyed。

下面是创建服务的代码(如果有帮助的话)。

    ServiceConnection conn = new ServiceConnection(){
    @Override
    public void onServiceConnected(ComponentName c, IBinder b) {
        Log.d("TK","Connected");
        //binder = (ICountService.Stub) b;
        service = ICountService.Stub.asInterface(b);
        try {
            service.setCallback(new ICountCallback.Stub(){

                @Override
                public void alert() {
                    Log.d("TK","alert!");
                }

                @Override
                public void updateTime(final int sec) {
                    handler.post(new Runnable(){

                        @Override
                        public void run() {
                                                            indicator.setText(toText(sec));
                        }

                    });
                }               
            });
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onServiceDisconnected(ComponentName c) {
        Log.d("TK","Disconnected");
    }           
};

private void startCountService(){
    Intent i = new Intent(ICountService.class.getName());
    boolean ok = context.bindService(i, conn, Context.BIND_AUTO_CREATE);
    Log.d("TK", "bindService="+ok);
}

根据文档,只有当服务不存在时才应该创建服务,但显然它在第二次打开时会启动另一个实例。

bindService()如果服务未运行,将创建服务实例。unbindService()如果没有其他绑定连接并且没有人调用,将销毁服务实例startService()。如果服务被破坏unbindService(),然后是后续的bindService()将创建一个新的服务实例。

恕我直言,理想情况下,unbindService()不会立即销毁服务,而是先让它停留几秒钟,以防万一bindService()不久之后unbindService()。然而,他们并不是这样实施的。

我想要的只是当活动关闭时,服务继续运行,当活动再次打开时,它可以重新连接到服务。

你应该使用startService() and stopService()代替(或可以想象除了)bindService() and unbindService().

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

为什么主活动关闭时远程服务会被销毁? 的相关文章

  • Android正则表达式-返回匹配的字符串

    在我的 Android 项目中 我有一个正则表达式和一个字符串 其中应该有匹配的表达式 问题是我只找到了一个matches 方法 返回布尔值 有没有什么东西 只返回匹配的字符串 例如 如果我的字符串是 中午 12 点去商店 我想检查该字符串
  • 在 Android 中录制、保存和播放视频

    我正在尝试制作一个使用相机应用程序录制视频的应用程序 然后将该视频保存在 SD 卡上 以便我可以播放它 我有一些代码 但我不知道如何继续 因为我是 Android 初学者 我的活动 public class Camcorder extend
  • 如何使网页视图与其内容一样大?

    我在网上找不到这个 我有很多网络浏览量HorizontalScrollView 我希望它们全部适合其内容 然后可能具有不同的宽度 更多 我给那些充气webviews像这样 LinearLayout layout LinearLayout g
  • Android studio 不让我安装 Android SDK 平台

    一切都工作正常 直到我导入 Esclipse Lollipop 示例并出现以下错误 我在 Mac OS X 上遇到了完全相同的问题 以下是我修复它的方法 cd Library Android sdk tools android update
  • 如何在Android中访问Sqlite数据库?

    我可以在模拟器中使用 adb shell 命令访问我的 sqlite 数据库 但无法对我的 HTC Desire 手机执行相同操作 它会抛出一些权限被拒绝的消息 是否有可能访问这些数据库以进行调试 任何想法 提前致谢 您还可以在命令提示符
  • Android - 缩放和压缩位图

    我正在开发一个 Android 应用程序 它具有相机捕捉和照片上传功能 如果设备具有高分辨率相机 则捕获的图像尺寸将非常大 1 3MB或更大 由于应用程序需要将此图像上传到服务器 因此我需要在上传之前压缩图像 例如 如果相机拍摄了 1920
  • 将长文本分成页面供viewpager使用

    我正在实施中的messureText方法这个问题 https stackoverflow com a 22199847 3930169在 viewpager 中渲染之前将长文本分成指定大小的页面 我正在使用增量字符数进行 while 循环以
  • 使用 Gradle 构建未签名的 APK

    目前我正在尝试学习 Gradle 来构建 Android APK 如何在 gradle 中设置选项来构建未签名的 APK 您不必设置任何选项 只需运行常规任务即可 gradle assemble 这将在project build apk 中
  • 在 Android 5.0 Lollipop 上以编程方式在视图上设置主题

    Android 5 0 Lollipop 添加了为不同视图 不仅仅是 Activity 设置主题的功能 android theme style MyAwesomeTheme 有没有办法动态设置视图的主题 安卓 主题 https develo
  • FloatingActionButton 不隐藏

    我试图隐藏我的 FloatingActionButtonfabLocation以编程方式 fabLocation setVisibility View GONE 但它不起作用 如果我添加android visibility gone 在我的
  • Android MediaPlayer 问题:“错误 (-38 , 0) ”和“在状态 1 下停止调用”

    我的设备甚至模拟器都没有声音 其实在一线 mediaPlayer create this musicIds 0 eclipse 建议我两个选择 使用 MediaPlayer 声明类型 更改对静态的访问 或 在 Create 上添加 Supp
  • 从视频文件中提取音频的问题(android)

    我需要将 mp4 或任何其他视频格式 转换为 mp3 或 wav 文件 我正在使用 C Xamarin Forms 我使用的任何库要么不适合我 要么与 android 不兼容 我尝试过使用 Xamarin Android FFMpeg 和
  • 如何从内存中清除动态创建的视图?

    我试图从记忆中清除一些观点 情况是这样的 我有一个活动 我将其称为 A 另一个称为 B 现在 我在 Activity A 中按下一个按钮 该按钮调用 Activity B 动态创建大量视图 之后 我按后退按钮返回到活动 A 多次重复这两个步
  • 如何在单击时使图像抖动/摆动?

    我有一个图像按钮 我想在触摸它时摇动 摆动 我希望它能够像 iPhone 应用程序图标在被长时间按下时那样摆动 Thanks 尝试使用这个
  • 从设备获取日期并将其转换为 GMT+4

    我正在尝试查找 Android 手机的时区 因为我想获取日期对象 但我想要 GMT 4 格式 我看到的所有其他答案都会转换来自 API 请求的时间 其时区已知 我怎样才能做到这一点 其他方法可能是将服务器传来的 GMT 4 时间转换为我设备
  • 使用 ExoPlayer 播放 YouTube 视频 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣使用外放播放器 http developer android com guide topics
  • RecyclerView:调整项目大小的动画

    我有一个RecyclerView 回收者视图的每个项目都可以展开或不展开 同一时间只能展开一项 本质上 我试图在棒棒糖拨号器中重新创建历史列表 我发现在 RecyclerView 上使用 LayoutTransition https sta
  • ACRA formkey 哪里可以得到?

    所以我尝试按照以下说明进行操作https github com ACRA acra wiki BasicSetup https github com ACRA acra wiki BasicSetup但它太旧了或者什么的 使用我自己的 gm
  • DDMS 未显示来自设备的线程

    我想使用以下命令检查我的 Android 应用程序中是否存在内存泄漏DDMS特色于Eclipse 当我启动模拟设备时 线程会正确显示模拟设备 从 8600 及更高版本开始 然而 当我将 Droid 连接到 PC 时 该设备在 DDMS 中显
  • 如何将 Three.js 代码实施到 Android 移动应用程序中?

    我用 HTML CSS 和 JS 编写了 Three js 场景的代码 显示 3D 头部模型及其上的标记 它适用于我的 Angular 项目 我还可以通过将 HTML 代码添加到 Web 视图中 使其在适用于 Android 和 iOS 的

随机推荐

  • 将静态私有映射初始化为空

    我有一个static map这是一个private数据成员 如何在实现文件中初始化它 使其初始容器为空 它不是const 重要的是 开始时该容器中没有任何东西 Header class XXX private static std map
  • 为什么 Chrome 不使用元刷新进行重定向

    我使用的应用程序有一个 PL SQL 包 它创建页面并使用函数创建 META 标记 它创建一个带有 META 标记的网页 如下所示 问题是 Chrome 不喜欢 NAME Refresh 属性 它不会重定向页面 尽管它在 IE 和 Fire
  • 获取上传到 Flask 的文件的路径[重复]

    这个问题在这里已经有答案了 我有一个 Python Web 应用程序 为了界面方便 它在 Web 浏览器中本地运行 处理用户选择的文件 并保存处理后的数据 我需要添加在选择文件的同一文件夹中创建新子目录的功能 即 如果文件是path fna
  • 在 SQL 查询中将 int 或 null 转换为布尔值的最佳方法是什么?

    在 SQL 查询中将 int 或 null 转换为布尔值的最佳方法是什么 例如 任何非空值都是TRUE在结果中 任何空值都是FALSE在结果中 据我所知 如果我错了 请纠正我 SQL 中没有文字布尔值的概念 您可以将表达式计算为布尔值 但不
  • ANDROID:无法解析索引 13 处的属性

    gt gt java lang RuntimeException 无法启动活动 ComponentInfo sharedpreferenceex app htc com listview lv sharedpreferenceex app
  • 如何避免“dom”和“webworker”库之间的冲突?

    我将 TypeScript 与 React 结合使用 我想要实现的目标之一是后台同步以实现离线支持 要启用 Service Worker 的类型 我必须包含 WebWorker 库 但它与 DOM 库冲突并产生错误 25 1 Definit
  • 在 PHP 中模拟值类型结构类

    有没有办法在 PHP 中模拟结构类 即一个按值传递而不是按引用传递的类 因此它仍然可以进行类型提示 如果是这样 可以使用哪些不同的技术 最好的技术是什么 如果这是可能的 您显然可以为 PHP 创建一个完全类型安全的层 有这样的层吗 有没有人
  • 带有预分配缓冲区的循环缓冲区?

    是否有任何库具有可与预分配缓冲区一起使用的循环缓冲区类 我查看了 Boost circular buffer 但似乎它的所有构造函数都需要分配器 我不想重新发明循环缓冲区类 但必须使用预先分配的缓冲区 我想要类似的东西 char buffe
  • Rest API 与 AMQP

    什么时候使用 Rest API 而不是 AMQP 在内部微服务之间进行通信更好或更合理 我知道使用 Rest API 服务会更加相互依赖 所以我们是否可以说我们应该始终避免这种情况并使用 AMQP 内部人员之间的沟通什么时候更好或更合理 使
  • Python:输入验证

    我询问用户是否要先使用输入验证 以便仅接受 y Y n 或 N 作为有效响应 当我运行它时 我的代码似乎崩溃了 choice raw input Would you like to go first or not y Y or n N pr
  • 无法将源类型“List”转换为 IList

    这可能是一个非常简单的问题 但有些东西对我来说没有意义 给定这个类 public class Person ICloneable public object Clone Console WriteLine Hello world retur
  • 如何在 Symfony 路由中使用锚点?

    我在routing yml 文件中定义了一条路线 route name path dashboard messages id 然而 当我要求 Symfony 生成该路线时 我得到 dashboard 23messages 12345 如何跳
  • 在android中禁用短信通知[重复]

    这个问题在这里已经有答案了 可能的重复 我们可以在 Android 中的短信到达收件箱之前将其删除吗 https stackoverflow com questions 1741628 can we delete an sms in and
  • 在 C# 中将字符串转换为日期时间,格式为 yyyy-MM-dd HH:mm:ss

    我怎样才能转换这个2014 01 01 23 00 00 to DateTime我已经这样做了 Console WriteLine DateTime ParseExact 2014 01 01 23 00 00 yyyy MM dd HH
  • 将 onDelete 与原则 2 一起使用

    我无法让 onDelete 在 Doctrine2 中工作 使用 YAML 映射 我在我的尝试过这种关系Product class oneToOne category targetEntity Category onDelete CASCA
  • 如何使用 AzCopy 通过 cmd 在 Azure Web 应用服务中工作

    我面临一个问题 我正在使用 AzCopy 将文件复制到 Blob 存储 目前我使用虚拟机来托管我的应用程序 我能够将数据移动到 blob 现在我已将代码迁移到 Azure PaaS 即 azure 应用服务 现在的问题是我无法使用 cmd
  • 最新的omniauth-facebook gem 破解方案

    红宝石 2 6 3 gem rails gt 6 0 2 gt 6 0 2 1 我正在使用最新的omniauth facebook并一起设计 宝石文件 宝石 设计 gem omniauth facebook 启动服务器时出现此错误 vers
  • Docker MySQL连接DBeaver

    我刚刚完成了 YouTube 上的 Docker 教程 我能够为 PHP 和 MySQL 创建几个 Docker 容器 文件结构如下 gt Docker PHP MySQL gt DB Dockerfile gt src index php
  • 类型分类百科中应用语的构成规律

    我在读类型分类百科全书 https wiki haskell org Typeclassopedia我在应用程序部分遇到了麻烦 我想我 有点 已经弄清楚了 但我想看看我的理解是否正确 直到组合法出现之前 适用法则才有意义 我只是无法解析其右
  • 为什么主活动关闭时远程服务会被销毁?

    我编写了一个 android 程序 有一个 UI 主要活动 并且它启动一个服务 该服务及时回调 UI 活动以更新视图 它工作正常 除了 如果活动关闭 使用 BACK 并再次启动 服务也将再次启动 服务播放音频文件 因此有两个重叠的声音 我使