2012-10-06 4 views
1

Android 용 안드로이드 안의 WebView를 가지고 있는데,이 WebView는 Javascript가 많은 웹 사이트를 실행하고 있습니다. 사용자가 내 앱이 백그라운드에서 실행 중일 때 높은 전력 소모량을보고했으며이 자바 스크립트 때문일 것으로 예상됩니다. 그러나 WebView를 완전히 언로드하거나 제거하는 것은 시간이 오래 걸릴 수 있으므로 바람직하지 않습니다.Android WebView는 애플리케이션이 백그라운드에서 실행 중일 때 많은 전력을 소비합니다.

자바 스크립트를 선택적으로 사용 중지하거나 앱이 백그라운드 (onPause())에있을 때 WebView를 완전히 사용 중지 할 수 있습니까?

+0

웹 뷰가 배경에있을 때 뭔가 할 수 있는지 확실하지 않습니다. 웹뷰는 당신 활동의 일부라고 생각합니다. 활동이 보이지 않으면 일시 중지됩니다. – vandzi

+0

필자는 활동을 다시 시작할 때 웹보기가 백그라운드에서 "완료"되었음을 나타내는 내용을보고 있다고 말할 수 있습니다. 즉, 앱이 일시 중지 된 동안로드해야하는 시간에 민감한 항목이 표시됩니다. –

답변

1

http://www.mcseven.me/2011/12/how-to-kill-an-android-webview/에 접근하는 유일한 방법은 자바 스크립트가없는 빈 페이지로 리디렉션하는 것입니다 (다시 시작한 다음 다시 돌아 오기).

폰갭의 경우, 페이지 자체를 반환하는 코드를 포함해야합니다 :

<!DOCTYPE html><html><head> 
     <script type="text/javascript" src="js/phonegap/cordova-2.9.0.js"></script> 
     <script type="text/javascript" src="js/jquery/jquery-1.9.1.min.js"></script> 
    </head><body> 
     <script type="application/javascript"> 
      $(document).on('deviceready', function() { 
       $(document).on('resume', function() { 
         return history.back ? history.back() : history.go(-1); 
       }); 
      }); 
     </script> 
    </body></html> 

업데이트을 : 위의 코르도바 2.x.x.입니다 코르도바 3.xx에서는 간단하게 구성 XML에 KeepRunning 환경 설정을 추가 할 수 있습니다 (확실하지 3.0.0 이후,하지만 currect 3.7.x에서 확실히 경우) :

<preference name="keepRunning" value="false" /> 

이것은 APP 때까지 모든 JS에게 타이머를 일시 중지 다시 시작됩니다. https://stackoverflow.com/a/21629586/2011448을 참조하십시오.

관련 문제