我的想法是要创建一个简单的Web浏览器,在该浏览器中将网页保存在卡中,以后您就可以检索它。
每个卡/网页都需要在其自己的线程上运行。
我已经设置了webview和myWebViewClient
来加载链接,还有第二个活动,我可以在其中显示并添加新的网页。选择ListView项是在loadUrl(url)
的{{1}}中调用MainActivity
,但这不是理想的结果,我需要在线程中运行webview,将其放在堆栈上,然后再恢复这是任务。
答案 0 :(得分:0)
您不能像在Android中那样直接在后台运行Web视图,因为所有视图都需要在UI线程上运行。
对于您的任务,您可以做一件事,在bacground中加载html数据,然后在Asyntask的onPost方法中将该html响应设置为webview
答案 1 :(得分:0)
您可以为每个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方法。