如何在多线程中 运行 webviews
How to run webviews in multiple threads
我的作业说要创建一个简单的网络浏览器,将网页保存在卡片中,稍后您可以检索它。
每个 card/webpage 需要 运行 在它自己的线程上。
我已经设置了 webview 和 myWebViewClient
来加载链接,以及第二个 activity 我可以在其中显示和添加新网页。选择 ListView 项目是在 WebView
上调用 MainActivity
中的 loadUrl(url)
,但这不是理想的结果,我需要在线程中 运行 webview,将其放在堆栈中,然后以某种方式恢复它的任务。
您不能像在Android中那样直接运行后台的webview,所有视图都需要在UI线程上运行。
对于你的任务,你可以做一件事,在后台加载 html 数据,然后在 Asyntask
的 onPost 方法中设置 html 对 webview 的响应
您可以为每个 WebView 创建一个新的 Activity 并将其任务 ID 保存在列表中。如果堆栈中不存在该 ID,则创建一个新的 WebView Activity 并将其放入堆栈,否则将现有的 WebView Activity 从堆栈中推送并恢复此 activity。
使用标志启动 WebView 活动:Intent.FLAG_ACTIVITY_NEW_TASK 和 Intent.FLAG_ACTIVITY_MULTIPLE_TASK
在这些活动中调用 getTaskId() 并使 ID 可用于您的主 activity。当您想恢复 activity 时,请执行以下操作:
ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
am.moveTaskToFront(taskId, 0);
需要权限android.Manifest.permission.REORDER_TASKS
如果内存管理没有破坏您的 activity,此方法将起作用,在这种情况下,将调用 OnCreate 方法。
我的作业说要创建一个简单的网络浏览器,将网页保存在卡片中,稍后您可以检索它。
每个 card/webpage 需要 运行 在它自己的线程上。
我已经设置了 webview 和 myWebViewClient
来加载链接,以及第二个 activity 我可以在其中显示和添加新网页。选择 ListView 项目是在 WebView
上调用 MainActivity
中的 loadUrl(url)
,但这不是理想的结果,我需要在线程中 运行 webview,将其放在堆栈中,然后以某种方式恢复它的任务。
您不能像在Android中那样直接运行后台的webview,所有视图都需要在UI线程上运行。
对于你的任务,你可以做一件事,在后台加载 html 数据,然后在 Asyntask
的 onPost 方法中设置 html 对 webview 的响应您可以为每个 WebView 创建一个新的 Activity 并将其任务 ID 保存在列表中。如果堆栈中不存在该 ID,则创建一个新的 WebView Activity 并将其放入堆栈,否则将现有的 WebView Activity 从堆栈中推送并恢复此 activity。
使用标志启动 WebView 活动:Intent.FLAG_ACTIVITY_NEW_TASK 和 Intent.FLAG_ACTIVITY_MULTIPLE_TASK
在这些活动中调用 getTaskId() 并使 ID 可用于您的主 activity。当您想恢复 activity 时,请执行以下操作:
ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
am.moveTaskToFront(taskId, 0);
需要权限android.Manifest.permission.REORDER_TASKS
如果内存管理没有破坏您的 activity,此方法将起作用,在这种情况下,将调用 OnCreate 方法。