如何在停止运行时自动重新运行不同的已安装Android应用程序?

时间:2015-04-22 21:23:57

标签: java android

我想创建一个非常基本的应用程序,只要它正在运行,它会检测每一帧更新,是否在后台运行不同的应用程序(一个看不见的应用程序)在主屏幕区域,只有battery/wifi/simcard图标对面顶部的图标不在全屏时。希望有意义,不知道顶部的那个栏叫什么。)

我有一个复选框,在我的应用布局中检查后,只要自动关闭,它就会不断重新启动应用。取消选中后,它将允许应用关闭并保持正常关闭状态。这是假设我想要检查和运行的第三方应用程序已经手动安装。

它甚至可以在后台运行,即使在手机被锁定或处于睡眠模式时也可以运行,我可以自己编码这些东西,我确信。

所以这里的交易,我需要两个函数/方法/无论如何。一个检查现有已安装的应用程序是否正在运行的状态(我猜通过使用应用程序ID或类似于param的东西),即使它在我提到的那个背景中,它也不需要检查窗口专注,只是它的现有流程是否正在运行。

我需要根据其ID运行应用程序的其他功能,就像我所说的检查其运行状态一样。

这里有一个模型来填补空洞,如果我非常解释这个问题,请注意我是android java编程的新手,但我认为我学习的速度有点快,因为我和I&# #39;我已经熟悉c ++,所以学习起来比学习新手更少。

代码:

//check fires every step/update
If (CheckIfAppIsRunning("com.compamy.company") == False) { // or 0, whatever java does I don't have my pc or eclipse in front of me right now
    RunApp("com.company.example");
}

我暂时没有这样做,但我很肯定这应该是我在这一点上所需要的。只需CheckIfAppIsRunning()RunApp()功能。

1 个答案:

答案 0 :(得分:0)

不幸的是,在Android中运行和不运行的概念并不那么简单。

首先,Android通常会尽可能长时间地保持应用程序流程,因此即使(已停止)应用程序也可以作为轻量级进程运行,因为用户希望重新启动应用程序。

这使得无法准确检测出哪些进程真正在运行,哪些进程没有。

但好消息是android在Service对象中执行后台工作,可以由其他组件重新启动。

所以,如果我是你,我会尝试使用Activity Manager并获取正在运行的服务列表。并将它们与从Package Manager中提取的已安装应用列表进行比较,以确定正在运行的内容和未运行的内容。

现在假设您要重新启动特定服务,并非所有服务都具有启动它们的公共接口(在应用程序的manifest.xml中定义的公共意图),因此您可能需要启动整个应用程序,这意味着两件事:

  • 它会被带到前面,无论用户做什么都会被打断。
  • 如果设备处于空闲模式,则不会发生任何事情。