java - 从前台服务打开 Activity

标签 java android service

我有一个应用程序需要 24/7 运行。 我知道android操作系统在后台运行一段时间后会杀死我的应用程序的进程,所以我有一个粘性的前台服务。 现在的问题是,我希望该服务检查我的应用程序是否正在运行,如果没有运行,那么我希望该服务启动该应用程序。可能吗?

最佳答案

onStop 之后,您的 Activity 将不可见。如果您想查看您的 Activity 正在运行,即在foreground上;

public boolean isForeground(String myPackage) {
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1); 
    ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
    return componentInfo.getPackageName().equals(myPackage);
}

如果不在前台,可以使用下面的否则;

Intent i = new Intent(this, MyMainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
  • 注意;另一种方法是,您可以从您的 Activity 向您的服务发送有关其状态的消息
  • 或者,使用偶像的想法] 2 ;

关于java - 从前台服务打开 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497596/

相关文章:

从 native pthread 调用时不调用 Java 方法

java - HttpServletResponse 无法设置字符集

java - jaxb 解码时间戳

java - 在 firebase 中使用 ids 检索嵌套数据?

android - Toast LENGTH_LONG 和 LENGTH_SHORT 的持续时间是多少

c# - 跟踪Windows服务状态并在WPF UI中显示状态

service - 错误1001.指定的服务已存在

java - 如何更改下面的代码以避免意外的类型错误(必需 : variable; found: value)?

java - 如何从选择了上下文菜单选项的 View 中获取?

android - 使用 Android Mapbox SDK 显示多个标记的自定义信息窗口