首页 > 解决方案 > 来自前台服务的开放活动

问题描述

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

标签: javaandroidservice

解决方案


在 onStop 之后,您的活动将不可见。如果您想看到您的活动正在运行,即在前台

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);
  • 笔记; 另一种方法,您可以从您的活动向您的服务发送有关其状态的消息
  • 或者,使用偶像的想法] 2 ;

推荐阅读