相关疑难解决方法(0)

Android:在Activity上下文之外使用WebView

我正在尝试通过后台IntentService实现Web Scraping,该后台定期抓取网站而不在用户手机上显示视图.

  • 因为我必须在加载的页面上调用一些javascript我不能使用任何HttpGet等.
  • 因此,我必须使用只能在UI线程上运行的WebView实例.
  • 任何尝试启动使用WebView的Activity都会导致View进入手机前景(根据Android的活动设计)
  • 任何在Activity上下文之外使用WebView的尝试都会导致错误,指出您无法在非UI线程上使用WebView.
  • 出于各种复杂性的原因,我不能考虑使用像Rhino这样的库来实现无UI的网页抓取.

有什么方法可以解决这个问题吗?

android web-scraping android-webview intentservice android-activity

24
推荐指数
3
解决办法
2万
查看次数

在onPause之后,PhoneGap继续在Android上运行

当应用程序在后台时,我决定测试phonegap WebView是否正常运行.

function test2(x){
    $('<div></div>', {text: x.cmd}).appendTo($('#list'));
}
$(function(){test2({cmd:"start"});});
function cb_pause(){test2({cmd:"pause"});}
function cb_resume(){   test2({cmd:"resume"});}
function tick(){test2({cmd:"timer" + timer});timer++;setTimeout(tick, 1000);}
document.addEventListener("pause", cb_pause, false);
document.addEventListener("resume", cb_resume, false);
tick();
Run Code Online (Sandbox Code Playgroud)

它打印pauseresume打开onPauseonResume.和打印timer0,timer1等每一秒.

即使我离开应用程序并开始玩游戏,它也在打印.我知道我可以并且应该停止计时器onPause但仍然.看起来不对劲.我预计android会冻结WebView.

我知道后台线程在后台应用程序中不会停止,直到它被卸载.

所以问题是:是否有办法冻结/暂停/卸载webview onPause和解冻/恢复/加载onResume

当我说加载时我的意思是当用户离开app时它应该处于相同的状态.

当我说冻结时,我的意思是我的代码即使在它将继续调用时也会暂停 setTimeout

我想我希望Android的行为像iOS一样.

android background cordova

18
推荐指数
1
解决办法
6815
查看次数