首页 > 解决方案 > 如何在多个线程中运行 webview

问题描述

我的任务是创建一个简单的网络浏览器,其中网页保存在卡片中,稍后您可以检索它。

每个卡片/网页都需要在它自己的线程上运行。

我已经设置了 webview 并myWebViewClient加载链接,以及我显示并可以添加新网页的第二个活动。loadUrl(url)选择 ListView 项目正在调用MainActivitya WebView,但这不是理想的结果,我需要在线程中运行 webview,将其放在堆栈上,然后以某种方式恢复它的任务。

标签: androidwebview

解决方案


您可以为每个 WebView 创建一个新的 Activity 并将他的任务 ID 保存在 List 中。如果堆栈中不存在 ID,则创建一个新的 WebView Activity 并将其放入堆栈,否则将现有的 WebView Activity 从堆栈中推送并恢复此活动。

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

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

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

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

如果内存管理不破坏您的活动,则此工作,在这种情况下 OnCreate 方法将调用。


推荐阅读