当前位置: 首页 > 知识库问答 >
问题:

跳过773帧!应用程序可能在其主线程上做了太多工作。[Android网络视图]

束飞捷
2023-03-14

我有一个应用程序是webview应用程序。这是一个HTML页面,我在其中使用了一些JS和Jquery。但最近我在模拟器上收到了这样的警告:

跳过了773帧!应用程序可能在主线程上做了太多的工作。

暂停所有线程所需时间:14.255ms

背景粘性并发标记扫描GC释放38341(1813KB)AllocSpace对象,8(160KB)LOS对象,0%空闲,11MB/11MB,暂停46.590ms总计800.341ms

暂停所有线程所需时间:35.225ms

尝试删除非JNI本地引用、转储线程

暂停所有线程所需时间:224.946ms

背景部分并发标记扫描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);
    }
}

有没有办法阅读网络视图或其他让它运行得更快的东西?

共有1个答案

白子明
2023-03-14

我添加了一个溅屏来提高速度。

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);
            }


        });
 类似资料:
  • 这很好,但我在日志中收到“应用程序可能做了太多工作”消息,并跳过了一系列帧。我该如何解决这个问题?

  • 我在下面的代码中ping了java Android中的IP列表,但我现在的问题是运行时出现延迟,这个问题显示为“跳过602帧!应用程序可能在其主线程上做了太多工作。”有人能给我推荐一个解决方案吗?因为我是android的初学者

  • 我正在用这个功能为Android应用程序编码: 我成功地运行了它,但在我为Android支持设计导入了一些Nuget软件包之后,现在它抛出了这样一条消息。 我/编舞(1962):跳过了524帧!应用程序可能在其主线程上做了太多工作。 你能告诉我我做错了什么吗?

  • 我正在开发一个应用程序,它应该从网络服务中获取JSON响应,并将每个元素写入列表视图,我读到我应该使用Asyncask来获取HTTP响应,我做到了,我可以从网络服务中检索数据并在TextViews中显示它们。但是当我尝试在列表视图中显示元素时,它不会显示任何内容,并在logcat中给我以下消息: 这是我的主要代码: 我的列表适配器: 最后是搜索结果。java: 那么,我做错了什么?你对此有什么想法

  • 这发生在我将微调值保存到文件时。我已经使用线程来重新使用它的工作。但它仍然不工作...请帮助我...

  • 我查看了StackOverflow的答案,但没找到多少。所以,我这样做是为了练习,就像Hello World使用JSON一样,我从openweather API获得JSON响应。我在EditText中写下城市的名称,然后按下按钮进行搜索,并在日志中显示JSON字符串。 我该怎么做才能不收到那个消息?