在我的 Android 应用程序中,我有一个相同 Activity 的打开实例列表(这个 Activity 基本上包含一个 WebView
。)当用户点击列表中的一个项目时,我想恢复根据显示正确网站的 Activity 。但是,使用带有标记 Intent.FLAG_ACTIVITY_SINGLE_TOP
或 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
的 Intent 将无法解决问题,因为 Activity 是相同的(只是具有不同附加功能的不同实例)。
我认为我必须使用多个(例如 10 个)具有不同名称的相同 Activity 。然后每个网站在其自己的 Activity 中启动。但是,当我要打开超过10个网站时,我又遇到了麻烦。
关于如何解决这个问题还有其他想法吗?
最佳答案
要解决此问题,您可以依靠 Android Tasks .
你必须做的:
使用标志启动 WebView Activity :Intent.FLAG_ACTIVITY_NEW_TASK
和 Intent.FLAG_ACTIVITY_MULTIPLE_TASK
在这些 Activity 中调用 getTaskId()
并使 ID 可用于您的主要 Activity 。当您想恢复 Activity 时,请执行以下操作:
ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
am.moveTaskToFront(taskId, 0);
需要权限permission android.Manifest.permission.REORDER_TASKS
当您想从 WebView 任务(由单个 Activity 组成)返回主任务时,请执行以下操作:
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);
关于Android:恢复特定的 Activity 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747465/