Android:恢复特定的活动实例



在我的Android应用程序中,我有一个相同活动的已打开实例列表(此活动基本上包含一个WebView。当用户单击列表中的项目时,我想恢复显示正确网站的相应活动。但是,将意图与标志Intent.FLAG_ACTIVITY_SINGLE_TOPIntent.FLAG_ACTIVITY_REORDER_TO_FRONT一起使用不会起作用,因为活动是相同的(只是具有不同附加功能的不同实例)。

我想我必须使用多个(例如,10)具有不同名称的相同活动。然后,每个网站都会在其自己的活动中启动。但是,当我想打开10多个网站时,我又遇到了麻烦。

还有其他想法如何解决这个问题吗?

要解决此问题,您可以依靠Android Tasks。

你必须做什么:

使用标志启动 WebView 活动:Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_MULTIPLE_TASK

在这些活动中调用getTaskId()并使 ID 可用于您的主要活动。如果要恢复活动,请执行以下操作:

ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
am.moveTaskToFront(taskId, 0);

需要权限permission android.Manifest.permission.REORDER_TASKS

如果要从 WebView 任务(由单个活动组成)返回到主任务,请执行以下操作:

Context context = getApplicationContext();
String packageName = context.getPackageName();
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(launchIntent);

最新更新