前台服务的公开活动

时间:2018-09-25 11:53:07

标签: java android service

我有一个需要运行24/7的应用程序。 我知道在后台运行一段时间后,Android OS会终止我的应用程序进程,因此我有一个粘性的Foreground服务。 现在的问题是,我希望该服务检查我的应用程序是否正在运行,如果没有运行,那么我希望该服务启动该应用程序。有可能吗?

2 个答案:

答案 0 :(得分:1)

在onStop之后,您的活动将不可见。如果您想查看自己的活动正在运行,即在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);
  • 注意;另一种方法,您可以从活动中向服务发送有关其状态的消息
  • 或者,使用idolon的想法] 2;

答案 1 :(得分:0)

这是什么类型的应用程序?我认为这种类型的应用程序对于用户而言可能非常烦人。 我不确定您的应用程序到底具有什么功能,但是您确定使用AlarmMangerJobScheduler无法实现相同的功能吗?