Android:恢复特定的 Activity 实例

标签 android resume

在我的 Android 应用程序中,我有一个相同 Activity 的打开实例列表(这个 Activity 基本上包含一个 WebView。)当用户点击列表中的一个项目时,我想恢复根据显示正确网站的 Activity 。但是,使用带有标记 Intent.FLAG_ACTIVITY_SINGLE_TOPIntent.FLAG_ACTIVITY_REORDER_TO_FRONT 的 Intent 将无法解决问题,因为 Activity 是相同的(只是具有不同附加功能的不同实例)。

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

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

最佳答案

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

你必须做的:

使用标志启动 WebView Activity :Intent.FLAG_ACTIVITY_NEW_TASKIntent.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/

相关文章:

android - 通过触摸移动按钮

android - Compose SwipeToDismiss 确认状态更改仅适用 >= 阈值

android - Android的 "Hello, Testing"教程中的JUnit NullPointerException错误

android - 在 Android 游戏中添加暂停/恢复支持

objective-c - 为什么 NSWindow 不恢复其状态(在 Lion 中使用 Resume)?

Android File.listFiles 不显示目录内的所有文件

Android 客户端服务器通信

php - php 中的 TLS session 恢复

java - 在java中暂停/恢复多个线程

javascript - jQuery:暂停按钮暂停所有其他操作