我的应用需要先进行多次http连接,然后才能提供在应用中进一步使用的结果。我需要在流程中使用webview来打开链接并获取/解析生成的html。我应该在哪里发布这些连接和webview的代码?请注意,中间步骤与用户无关,只要它在某处失败。
目前,我有2个活动:第一个是第一个连接(在asynctask中),它形成了需要在webview中打开的URL。我打开传递url的第二个活动,我在webview中打开url,获取html,并为最终结果做另一个连接。
我想到了以下选项:合并这两个活动并使用隐藏的webview?也许把它全部放在一个无UI片段中?或者将其编码为服务?
我不希望应用程序崩溃/冻结,例如互联网很慢或连接存在一些问题。
答案 0 :(得分:1)
如果您只需要从服务器(如REST api)获取数据,那么您应该使用像OKHTTP这样的库来发出HTTP请求。网络请求将作为要求异步,因此不会影响UI。您必须等待对您的请求的回复。收到回复后,解析它们。在您拥有所有回复之前,您需要在应用中使用逻辑来阻止访问功能。
答案 1 :(得分:0)
最后,我移动了一些东西,结果仍然有两个活动,但第二个只包含一个webview。所以从第一个活动开始,我startActivityForResult
两次(因为我需要两次使用webview),最后回到第一个活动。换句话说,该过程如下:
Act1(返回链接的一个http作业的asyncTask) - > Act2(在webview中打开链接并返回数据) - > Act1(使用该数据获得第二个链接) - > Act2(再次启动它以获得最终结果并将其传回) - > ACT1。
它肯定不优雅,但它似乎是最简单的解决方案。猜猜一个片段会更合适,但现在我的技能相当复杂。