public boolean isTargetActivityStarted = false;
@Override
public void onActivityResumed(Activity activity) {
if (activity instanceof YourTargetActivity) {
isTargetActivityStarted = true;
}
}
@Override
public void onActivityPaused(Activity activity) {
if (activity instanceof YourTargetActivity) {
isTargetActivityStarted = false;
}
}
在服务中检查变量:
if (((MyApplication) getApplicationContext()).isTargetActivityStarted) {
// Активити запущена и находится на переднем плане
} else {
// Активити не запущена или свёрнута
}
public class MessagingService extends FirebaseMessagingService {
public static final String ACTION_FILTER = "com.exampe.EVENT";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent intent = new Intent(ACTION_FILTER);
intent.putExtra(...);
sendOrderedBroadcast(intent, null);
}
}
创建自己的类
Application,在其中实现接口Application.ActivityLifecycleCallbacks并注册为侦听器。在其中,您可以跟踪打开或关闭了哪些活动:并且在必要的时候,获取服务中的应用,检查应用是否打开:
不要忘记在清单中声明您的应用程序类:
如果您只需要跟踪特定活动,请检查相应方法中的类类型
if (activity instanceof YourTargetActivity):在服务中检查变量:
有点特殊情况,但作为一种选择,您可以:
派送服务
Broadcastreceiver低AndroidManifest.xml优先级注册它发送一个通知
在
Activity以高优先级注册,OnResume()注册。receiverOnPause()在这个
receiver'e中做你在Activity跑步时需要做的事服务可以通过 Notification 发送通知
示例代码 - 来自我的项目:
意图包含单击通知时将启动的活动。
不难判断一个activity是否在屏幕上运行