有没有什么简单的方法来确定某个活动是否处于活动状态?我想根据哪个活动处于活动状态来执行某些操作。例如:
if(activityrunning == activity1)
//do this
else if (activityrunning == activity2)
//do something else
发布于 2011-03-27 09:48:19
您可以在活动中使用static
变量。
class MyActivity extends Activity {
static boolean active = false;
@Override
public void onStart() {
super.onStart();
active = true;
}
@Override
public void onStop() {
super.onStop();
active = false;
}
}
唯一的问题是,如果你在两个相互链接的活动中使用它,那么第一个活动中的onStop
有时会在第二个活动中的onStart
之后被调用。因此,这两种观点可能都是正确的。
这取决于您尝试执行的操作(从服务更新当前活动?)。您只需在activity onStart
方法中的服务中注册一个静态侦听器,然后当您的服务想要更新UI时,正确的侦听器将可用。
发布于 2019-04-15 18:30:14
我意识到这个问题已经很老了,但我认为它仍然值得分享我的解决方案,因为它可能对其他人有用。
在Android架构组件发布之前,该解决方案不可用。
活动至少部分可见
getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)
活动在前台
getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)
发布于 2012-05-31 23:45:34
我这样想得更清楚:
public boolean isRunning(Context ctx) {
ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (RunningTaskInfo task : tasks) {
if (ctx.getPackageName().equalsIgnoreCase(task.baseActivity.getPackageName()))
return true;
}
return false;
}
https://stackoverflow.com/questions/5446565
复制相似问题