我有一個應用程序,它是一個webview應用程序。它加載了一個HTML頁面,我使用了一些JS和Jquery。但最近我在模擬器上得到這個警告:跳過773幀!應用程序可能在其主線程上做了太多工作。 [ANDROID WEBVIEW]
跳過773幀!應用程序可能在其主線程上做了太多工作。
掛起所有線程了:14.255ms
背景粘併發標記掃描GC釋放38341(1813KB) AllocSpace對象,8(160KB)LOS對象,0%的遊離,11MB/11MB,已暫停 46.590ms總800.341ms
暫停所有線程了:35.225ms
嘗試刪除非本地JNI參考,傾銷線程
暫停所有線程了:224.94 6ms的
背景部分併發標記掃描GC釋放100(3KB)AllocSpace 對象,0(0B)LOS對象,25%的遊離,11MB/15MB,65.153ms總 423.872ms
掛起所有線程了暫停:19.208ms
跳過了152幀! 應用程序可能在其主線程上做了太多工作。
而這一直持續下去,直到index.html加載。
這是MainActivity.java:
package checker.coin.crypto.wingcrony.by.cryptocoinchecker;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.google.android.gms.common.api.GoogleApiClient;
public class MainActivity extends Activity {
private GoogleApiClient client;
private WebView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = (WebView) this.findViewById(R.id.webView);
view.getSettings().setJavaScriptEnabled(true);
view.getSettings().setDomStorageEnabled(true);
view.setWebViewClient(new MyBrowser());
view.loadUrl("file:///android_asset/www/index.html"); //try js alert
view.setWebChromeClient(new WebChromeClient()); // adding js alert support
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:") || url.startsWith("sms:") || url.startsWith("smsto:") || url.startsWith("mailto:") || url.startsWith("mms:") || url.startsWith("mmsto:") || url.startsWith("market:") || url.equals("http://wingcrony.com/?actie=donate")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
else {
view.loadUrl(url);
return true;
}
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) {
view.goBack(); //method goback()
return true;
}
return super.onKeyDown(keyCode, event);
}
}
離開是否有multieThread網頁視圖或任何讓它工作得更快?
嘗試將第一個'loadUrl'移動到後臺任務。這可能是它抱怨的。 –
你能解釋一下我的例子嗎?因爲我不知道如何在後臺加載它。就像你看到它只需要加載一個網址沒有更多 – Steven
這就是我所指的:[Android:AsyncTask](https://developer.android.com/reference/android/os/AsyncTask.html)。這可以用來將該部分卸載到不同的線程中,所以主線程不會跳過幀並保持連續。 –