在我的Android应用程序中,我有一个相同活动的已打开实例列表(此活动基本上包含一个WebView
。当用户单击列表中的项目时,我想恢复显示正确网站的相应活动。但是,将意图与标志Intent.FLAG_ACTIVITY_SINGLE_TOP
或Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
一起使用不会起作用,因为活动是相同的(只是具有不同附加功能的不同实例)。
我想我必须使用多个(例如,10)具有不同名称的相同活动。然后,每个网站都会在其自己的活动中启动。但是,当我想打开10多个网站时,我又遇到了麻烦。
还有其他想法如何解决这个问题吗?
要解决此问题,您可以依靠Android Tasks。
你必须做什么:
使用标志启动 WebView 活动:Intent.FLAG_ACTIVITY_NEW_TASK
和Intent.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);