android - 如何在多个线程中运行 webview
问题描述
我的任务是创建一个简单的网络浏览器,其中网页保存在卡片中,稍后您可以检索它。
每个卡片/网页都需要在它自己的线程上运行。
我已经设置了 webview 并myWebViewClient
加载链接,以及我显示并可以添加新网页的第二个活动。loadUrl(url)
选择 ListView 项目正在调用MainActivity
a WebView
,但这不是理想的结果,我需要在线程中运行 webview,将其放在堆栈上,然后以某种方式恢复它的任务。
解决方案
您可以为每个 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 方法将调用。
推荐阅读
- java - 如何正确截屏Android设备?
- jquery - jquery滚动到数据图像ID
- android - 重新创建活动后增加内存消耗
- graphviz - 如何在不改变安排的情况下将交易对手 B 连接到 C 以及反之亦然
- javascript - 函数 .data() 不读取内容 onCreate FIrebase 云触发器
- ansible - 如何从 Ansible 连接到 Rally
- excel - 是否有一个 Excel 公式可以返回一个时间范围内的日历月数?
- linux - 从 uart 读取
- php - 如何删除引导面板中不需要的中断
- openvpn - 一段时间后 OpenVPN 失去连接