如何在IntentService中使用WebView?

时间:2015-08-07 13:26:02

标签: android webview intentservice

我与this guy的情况相同。我需要在WebView中使用IntentService。总结一下:

  • 我需要使用JavaScript并管理Cookie,因此最简单的方法就是使用某种无GUI的浏览器。
  • Android没有适用于GUI的网络浏览器,因此我必须找到一种方法来使用WebView或找到一种模拟浏览器的方式。
  • 我想使用只能在UI线程上运行的WebView实例。

我的问题是:

  • 有没有办法序列化我context的{​​{1}},以便我可以使用此activity创建我的context
  • 如何使用Androids ContextWrapper类来模拟活动?

未提及的任何其他想法here?一些值得思考的东西: Link1

1 个答案:

答案 0 :(得分:2)

  

没有适用于Android的无GUI网页浏览器

虽然我最近没有尝试过,但WebView至少曾经没有特别要求显示其UI。我在WebView中使用Service,在我的情况下使用JavaScript解释器(在我们有更好的选项之前回来)。

现在,IntentService不是一个好选择。 WebView在很大程度上是异步的,IntentService会在WebView有机会完成其工作之前自行销毁。使用常规Service,您可以在其中控制Service生命周期,这样您只有在准备好时才能调用stopSelf()

  

我想使用一个只能在UI线程上运行的WebView实例。

WebView和线程之间的关系很复杂。但是,当我上次尝试它时,IIRC,实际上没有出现在屏幕上的WebView不需要主应用程序线程。但是,正如我所指出的,WebView以异步方式完成大部分工作。您可能会发现自己不需要背景线程。

  

有没有办法序列化我的活动上下文,以便我可以使用这个上下文来创建我的WebView?

不,也不会解决您的任何疑虑。

  

如何使用Androids ContextWrapper类来模拟活动?

这是不可能的,也不会解决你的任何问题。