如果应用程序可见则启动活动

时间:2012-12-23 20:37:48

标签: android android-intent android-activity

我正在我的应用程序中实现会话超时。 这里我要做的是启动登录活动,当且仅当应用程序可见(即显示)时,否则我不想做任何事情,因为当应用程序再次启动时,它将自动启动登录活动本身..

final List<RunningTaskInfo> tasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

    for (RunningTaskInfo runningTaskInfo : tasks) {
        runningactivities.add(0,runningTaskInfo.topActivity.toString());  
    }

但这对我不起作用,因为它在两种情况下都会启动登录活动。

请帮助!! 感谢

1 个答案:

答案 0 :(得分:0)

一种解决方案是在您的活动中使用意图接收器。您可以在仅希望从中启动新活动的活动(或活动)中注册接收者。然后,您可以使用sendBroadcast(intent)启动新活动。您应该在每项活动中注册和取消注册您的接收者,如下所示:

@Override
protected void onResume() {
    IntentFilter filter = new IntentFilter(CONSTANT_FOR_INTENT);
    registerReceiver(receiver, filter);
    }

@Override
protected void onDestroy() {
    unregisterReceiver(receiver);
}

private BroadcastReceiver receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        //handle the intent here - launch activity, etc
    }
};

现在您可以使用此功能启动您的活动:

Intent intent=new Intent(CONSTANT_FOR_INTENT);
sendBroadcast(intent);

如果您的活动未运行,您还可以使用sendOrderedBroadcast设置优先级并对意图执行其他操作。