跳过 773 帧!应用程序可能在其主线程上做了太多工作。 [ANDROID 网络视图]
Skipped 773 frames! The application may be doing too much work on its main thread. [ANDROID WEBVIEW]
我有一个 webview 应用程序。它加载了一个 HTML 页面,我在其中使用了一些 JS 和 Jquery。但最近我在模拟器上收到了这个警告:
Skipped 773 frames! The application may be doing too much work on its main thread.
Suspending all threads took: 14.255ms
Background sticky concurrent mark sweep GC freed 38341(1813KB)
AllocSpace objects, 8(160KB) LOS objects, 0% free, 11MB/11MB, paused
46.590ms total 800.341ms
Suspending all threads took: 35.225ms
Attempt to remove non-JNI local reference, dumping thread
Suspending all threads took: 224.946ms
Background partial concurrent mark sweep GC freed 100(3KB) AllocSpace
objects, 0(0B) LOS objects, 25% free, 11MB/15MB, paused 65.153ms total
423.872ms
Suspending all threads took: 19.208ms
Skipped 152 frames! The
application may be doing too much work on its main thread.
这一直持续到 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 webview 或任何让它工作得更快的方法?
我添加了启动画面以提高速度。
view.setWebViewClient(new MyBrowser() {
@Override
public void onPageFinished(WebView view, String url) {
//hide loading image
findViewById(R.id.imageLoading1).setVisibility(View.GONE);
//show webview
findViewById(R.id.webView).setVisibility(View.VISIBLE);
}
});
我有一个 webview 应用程序。它加载了一个 HTML 页面,我在其中使用了一些 JS 和 Jquery。但最近我在模拟器上收到了这个警告:
Skipped 773 frames! The application may be doing too much work on its main thread.
Suspending all threads took: 14.255ms
Background sticky concurrent mark sweep GC freed 38341(1813KB) AllocSpace objects, 8(160KB) LOS objects, 0% free, 11MB/11MB, paused 46.590ms total 800.341ms
Suspending all threads took: 35.225ms
Attempt to remove non-JNI local reference, dumping thread
Suspending all threads took: 224.946ms
Background partial concurrent mark sweep GC freed 100(3KB) AllocSpace objects, 0(0B) LOS objects, 25% free, 11MB/15MB, paused 65.153ms total 423.872ms
Suspending all threads took: 19.208ms
Skipped 152 frames! The application may be doing too much work on its main thread.
这一直持续到 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 webview 或任何让它工作得更快的方法?
我添加了启动画面以提高速度。
view.setWebViewClient(new MyBrowser() {
@Override
public void onPageFinished(WebView view, String url) {
//hide loading image
findViewById(R.id.imageLoading1).setVisibility(View.GONE);
//show webview
findViewById(R.id.webView).setVisibility(View.VISIBLE);
}
});