当前位置: 首页 > 面试题库 >

服务如何无限期运行并允许在android中绑定?

单于扬
2023-03-14
问题内容

我想要一个可以在后台运行直到停止的服务,即使启动该服务的组件已损坏并且也允许绑定到活动。怎么可能?

根据android绑定服务文档-有三种创建绑定服务的方法

  1. 扩展Binder类。
  2. 使用Messenger。
  3. 使用AIDL。

我已经使用Messenger(第二种方法)创建了绑定服务。活动通过其onStart()方法绑定到服务,并在其onStop()方法中取消绑定。两种消息传递方式(在活动和服务之间)可以正常工作。但是问题是,当活动取消绑定服务时,服务将被破坏。但是我想要可以无限期运行的服务。

可能是android
服务开发指南
-“尽管本文档通常分别讨论这两种类型的服务,但是您的服务可以双向运行-
可以启动(无限期运行)并允许绑定。这仅取决于您是否实现几个回调方法:onStartCommand()允许组件启动它,onBind()允许绑定。”

我还在服务中实现onStartCommand()方法并返回START_STICKY,但从未调用过它。在开发指南中查看有限服务的生命周期回调,没有onStartCommand()回调方法。那么如何运行服务,直到我们停止并允许绑定?

我在fedora 15 OS中使用eclipse平台。

任何帮助.....


问题答案:

您只需startService()要从某个地方开始。这样可以防止在没有更多绑定时自动停止它。

从服务文档中,重点是:

服务既可以启动,也可以绑定连接。在这种情况下,只要服务 启动,或者有一个或多个 带有Context.BIND_AUTO_CREATE标志的
连接 ,系统就会保持该服务运行 。

正如其他人指出的那样,如果需要资源,Android仍然可以将其杀死。您可以“优先化”您的服务,并使其成为前台服务,从而减少被杀死的可能性。



 类似资料:
  • 我正在迁移我的Android应用程序,目标是Android奥利奥。我正在运行一个服务,它应该无限期运行,以执行一个特定的任务。

  • 问题内容: 我最近开始尝试使用Python进行Web开发。到目前为止,我在将Apache与mod_wsgi结合使用以及针对python 2.7的Django Web框架方面取得了一些成功。但是,我遇到了一些问题,这些问题导致流程不断运行,更新信息等。 我编写了一个脚本,称为“ daemonManager.py”,该脚本可以启动和停止所有或单个python更新循环(我应该将它们称为Daemon吗?)

  • 我们公司需要用到阿里的办公安全平台SASE,我一直使用Linux办公的,我发现它提供了deb包,但是我是Manjaro用户,我将deb解包后重新打pkg.tag.zst包,发现这个程序在启动前,必须先执行/usr/local/bin/alisase-bin/3.4.2/alisasesvc --daemon启动一个守护进程,这行命令启动后有几个特点 1.运行命令后,程序会立刻退出,在后台fork出

  • postgres不知道在哪里可以找到服务器配置文件。 必须指定--config-file或-d调用选项或设置PGDATA环境变量。 因此,我尝试设置配置文件: 我得到以下错误: 我搜索了这个错误消息,但找不到解决方案。 有人能对此提供一些见解吗?

  • 问题内容: 我目前正在使用在Oreo中崩溃的startWakefulService函数。我意识到我要么必须切换到startForegroundService()并使用前台服务,要么切换到JobIntentService,但是基于下面的代码,我不确定该怎么做。(对不起,我是android新手)。正确方向的任何观点将不胜感激。 这是在Android 8.x上运行时遇到的当前错误 致命异常:java.l