代码之家  ›  专栏  ›  技术社区  ›  Jack Miller

Android:恢复特定的活动实例

  •  1
  • Jack Miller  · 技术社区  · 10 年前

    在我的Android应用程序中,我有一个相同活动的已打开实例列表(此活动基本上包含 WebView 。)当用户单击列表中的某个项目时,我希望恢复显示正确网站的相应活动。但是,使用带有标志的intent Intent.FLAG_ACTIVITY_SINGLE_TOP Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 因为“活动”是相同的(只是不同的实例和不同的附加功能),所以不会有效果。

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

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

    1 回复  |  直到 10 年前
        1
  •  1
  •   Jack Miller    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);