-1

谁能解释我假设我的应用程序定义了一个辅助功能服务。当应用程序获得可访问性权限时,它开始运行。假设由于某种原因内存问题服务被停止。如何让服务重新启动找不到任何方法。请帮忙。

非常感谢。

嗨 Oblivion,直到今天我才刚开始提问,我以前只是指 Stack Overflow :-)。对不起,我会确保我会提供完整的描述。现在我的问题。

我正在考虑两种方法

  1. 作为粘性服务启动
  2. 在不同的进程中运行服务

第一种方法->假设应用程序崩溃并且由于它很粘,它重新启动,并且由于先前崩溃的一些错误,它再次崩溃并出现一些异常,之后Android将无法启动服务Posible Soln->使服务逻辑尽可能多尽可能无错误

第二种方法-> 在http://mindtherobot.com/blog/37/android-architecture-tutorial-developing-an-app-with-a-background-service-using-ipc/的不同进程中运行服务 并制作确保您采用第一种方法提到的所有解决方案。

我所做的所有这些事情都在解决我的问题。

我最初的问题是假设我已经将一个客户端绑定到了 Accesibility 服务,并且我知道我的 Accesibility 服务没有运行,有没有办法可以触发一个意图并告诉 Android 启动我的 AccesibilityService。我需要这样做,因为我想控制我的辅助功能而不是 Android 的生命周期。

4

1 回答 1

4
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();

//your code!!!

// If we get killed, after returning from here, restart
return START_STICKY;
}

改变你的return statement喜欢上面。它将再次重新启动您的服务。

START_NOT_STICKY

如果系统在 onStartCommand() 返回后终止服务,请不要重新创建服务,除非有待交付的意图。这是最安全的选择,可以避免在不需要时运行服务,并且当您的应用程序可以简单地重新启动任何未完成的作业时。

START_STICKY

如果系统在 onStartCommand() 返回后终止服务,则重新创建服务并调用 onStartCommand(),但不要重新传递最后一个意图。相反,系统会使用 null 意图调用 onStartCommand(),除非有待启动的意图来启动服务,在这种情况下,将传递这些意图。这适用于不执行命令但无限期运行并等待作业的媒体播放器(或类似服务)。

START_REDELIVER_INTENT

如果系统在 onStartCommand() 返回后终止服务,请重新创建服务并使用传递给服务的最后一个意图调用 onStartCommand()。依次传递任何未决意图。这适用于正在积极执行应立即恢复的作业的服务,例如下载文件。

我们可以返回以上任何一个,取决于我们的要求。

来源:这里!!!

于 2015-11-27T05:38:29.333 回答