0

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

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

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

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

请帮忙!!谢谢

4

1 回答 1

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 设置优先级并执行其他操作。

于 2012-12-23T21:15:11.393 回答