标签: webview

WebView线程永不停止(WebViewCoreThread,CookieSyncManager,http [0-3])

我使用WebView在我们的某个应用程序的活动中显示一些互联网内容.
问题是,当用户切换到此活动时,WebView的线程会继续运行!
有问题的线程是:

Thread [<17> WebViewCoreThread] (Running)
Thread [<25> CookieSyncManager] (Running)
Thread [<19> http0] (Running)
Thread [<29> http1] (Running)
Thread [<31> http2] (Running)
Thread [<33> http3] (Running)
Run Code Online (Sandbox Code Playgroud)

暂停这些线程中的每一个,并检查它正忙于做什么:

Thread [<17> WebViewCoreThread] (Suspended)
    Object.wait(long, int) line: not available [native method]
    MessageQueue(Object).wait() line: 288
    MessageQueue.next() line: 148
    Looper.loop() line: 110
    WebViewCore$WebCoreThread.run() line: 471
    Thread.run() line: 1060

Thread [<25> CookieSyncManager] (Suspended)
    Object.wait(long, int) line: not available [native method]
    MessageQueue(Object).wait(long) line: 326
    MessageQueue.next() line: 144
    Looper.loop() line: 110
    CookieSyncManager(WebSyncManager).run() line: 90
    Thread.run() line: 1060 …
Run Code Online (Sandbox Code Playgroud)

multithreading android webview

34
推荐指数
3
解决办法
4万
查看次数

JavaFX中WebView的性能

我有一个HTML5用户界面和一个Java后端,并希望避免在普通的java中重建HTML ui,所以我的想法是运行本地网络服务器并使用webview在"本机"窗口中呈现它.解决方案似乎是使用可以嵌入摇摆的JavaFX WebView.在纸上听起来很棒(特别是因为他们声称使用的是WebKit,它在Chrome/Safari中的UI性能明显更好).

它有效,但是:性能难以置信.在Chrome,Safari(甚至是速度较慢的Firefox)中,数量级比同样的速度慢.它几乎无法使用(我的UI大量使用JQuery/JS).顺便说一句,我正在使用这篇文章中的代码.

问题是:

  1. 任何人都可以介绍我的经验吗?我只是做错了什么或者这是由JavaFX引起的,因此"正常"?

  2. 更好的想法如何实现这一目标?我目前只是简单地启动系统浏览器,但它不是很好(看起来不像集成). 

java performance swing javafx webview

34
推荐指数
4
解决办法
2万
查看次数

Android 4.2.1,WebView和javascript界面​​中断

我有一个添加了javascript界面​​的webview,在大多数设备上都能正常运行,除了那些运行Android 4.2.1的设备.

我删除了大部分代码,并保留了一个非常基本的代码:

this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.setWebChromeClient(new WebChromeClient());
this.webView.addJavascriptInterface(new Object() {
    public void handshake() {
        Log.d("JS", "handshake no params");
    }

    public void handshake(String json) {
        Log.d("JS", "handshake with params: " + json);
    }
}, "Android");
Run Code Online (Sandbox Code Playgroud)

在javascript方面,测试代码如下所示:

Android.handshake();
Run Code Online (Sandbox Code Playgroud)

但是我在logcat中得到了这个:

E/Web控制台:未捕获TypeError:对象[对象对象]没有方法'握手'

同样,在我测试过的较旧的android os(<4.2.1)(最小版本为2.3.3)的设备中,这同样适用.

奇怪的是,如果我开始一个全新的项目,除了一个只有一个WebView的Activity,使用相同的代码,一切都可以正常工作,即使对于4.2.1,但当它是我的实际项目的一部分,事情中断.我正在使用的webview没有做任何事情,我提供的代码片段中没有包含这些内容.

对我来说最奇怪的是,javascript找到了Android对象,但它只是没有请求的方法(握手),怎么会这样呢?

任何帮助将不胜感激,因为这在过去的两周左右让我疯狂(这是一个我一直回去的错误,然后放弃等等).谢谢.

javascript android webview

34
推荐指数
1
解决办法
3万
查看次数

从JavaScript调用Android方法

我搜索过,但我找不到答案.我正在使用HTML5和JavaScript开发基于webview的Android应用程序.我可以调用Android方法,例如makeToast()JavaScript吗?

javascript html5 android webview

34
推荐指数
1
解决办法
4万
查看次数

WebView不会在Android 4.0.x Ice Cream Sandwich中的应用程序启动时呈现本地HTML页面

我知道在这个论坛上已经以不同的格式提出了这个问题,但是到目前为止,没有一个答案 - 我接受或其他方式帮助了我.

我正在开发一个混合应用程序,它使用原生的Android,HTML和Adboe的Flex SDK(没有任何框架,如PhoneGap等,使用Android自己的WebView直接代码).

这是我面临的问题:

当应用程序启动时,首先触发flex sdk 的活动"AppEntry",它是一个空白活动,它只是设置flex SDK的上下文和初始设置.接下来,启动本机MainActivity,它使用WebView加载HTML项目.在Android 4.0.x(ICS)上,即使加载了URL,webview也会显示为空白(白色)(对于相关URL,已成功调用onPageFinished()).这是在第一次安装和启动应用程序时发生的,在停止应用程序后(通过从最近的应用程序栏中删除它),页面按预期加载.像这样重复重新启动有时会重现问题但频率不可预测.

有些事情需要考虑:

  1. 由于flex sdk约束,这些HTML文件不能直接存储在'/ assets'文件夹中,而是存储在assets文件夹中的目录结构中.

  2. 问题只发生在冰淇淋三明治上(我想知道的问题)!

我已经尝试过的东西:

  1. 硬件加速关闭(开/关无关紧要,两者都测试)

2.

WebSettings settings = webView.getSettings();        
        settings.setJavaScriptEnabled(true);
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
        settings.setSupportMultipleWindows(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setLoadsImagesAutomatically(true);
        settings.setDomStorageEnabled(true);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        settings.setSaveFormData(true);
        settings.setAllowFileAccess(true);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
            settings.setAllowContentAccess(true);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                settings.setAllowFileAccessFromFileURLs(true);
                settings.setAllowUniversalAccessFromFileURLs(true);
            }
        }
        settings.setAppCacheEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setLoadsImagesAutomatically(true);
        boolean enableZoom = true;
        settings.setBuiltInZoomControls(enableZoom);
        settings.setSupportZoom(enableZoom);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
            initializePluginAPI(webView);
        }
        settings.setDatabaseEnabled(true);
Run Code Online (Sandbox Code Playgroud)

问题是在Play商店中删除我的应用评论评论.任何帮助或见解将不胜感激.

apache-flex android webview android-webview android-4.0-ice-cream-sandwich

34
推荐指数
1
解决办法
1200
查看次数

Flash视频无法在WebView for Android 3.0.1中显示

我有一个简单的WebView来显示一个带Flash的网站(Adobe Flash网站) - 在运行Android 3.0.1的Xoom平板电脑上测试新发布的Flash 10.2

在参考stackoverflow上的每个问题后,我设置了以下内容:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.loadUrl("http://www.adobe.com/software/flash/about/");
Run Code Online (Sandbox Code Playgroud)

这两个插件JavaScript的是对使用的WebView的getSettings()功能,但闪存未能露面.当我设置setPluginStateON_DEMAND,它显示了对Flash的正确的占位符-又一次,当我点击其中的Flash应该是该项目时,闪光灯会消失(因为如果Flash视频无法呈现),只有音频(视可以听到Flash内容).

我还注意到我可以点击丢失的Flash,进行长按,然后点击左上角的新Flash'全屏'按钮应该是,然后它将在全屏模式下正确显示.但是当我回到WebView时,它再次无法显示并且只播放音频.

任何想法都表示赞赏!请不要仅仅回顾几个月之前发布的内容,而没有详细说明为什么我在Android 3.0发布前几个月提到了一个帖子!再次感谢任何帮助.伟大的社区!

flash android webview

33
推荐指数
1
解决办法
2万
查看次数

在Android webview中缓存

在Android webview中加载移动网页和非移动网页的速度更快; 加载缓存还是根本不加载?

什么是推荐的加载方式?

现在,当我不在所有非移动站点加载缓存时,加载速度比在本机浏览器中加载缓存要慢得多.

android caching webview android-webview

33
推荐指数
2
解决办法
8万
查看次数

使用android webview在浏览器中打开外部链接

我有这个代码,但不是因为它有效,它在webview中保持打开,我想要的是链接不属于我的网站在您的默认浏览器中打开.任何的想法?谢谢

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")){
                view.loadUrl(url);
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }

            }
        }
Run Code Online (Sandbox Code Playgroud)

browser android external hyperlink webview

33
推荐指数
4
解决办法
5万
查看次数

Webview电子邮件链接(mailto)

我有一个视图,并查看该网站有malito代码发送电子邮件.当我打开链接打开时出错.我想要在打开链接时打开Gmail应用或其他电子邮件应用.感谢所有帮助者.

public class teacher extends Activity implements OnClickListener {
    WebView webView;
    final Activity activity = this;    
    @Override
    public void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.teacher);
        webView = (WebView) findViewById(R.id.webView145);    
        webView.getSettings().setJavaScriptEnabled(true);           webView.loadUrl("https://dl.dropboxusercontent.com/u/233211/%D7%A8%D7%A9%D7%99%D7%95%D7%9F/iWebKit%20demo/ther.html");    
        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);    
                if (progress == 100)
                activity.setTitle(R.string.app_name); 
            }       });    
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
            // Handle the error
            }
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) { …
Run Code Online (Sandbox Code Playgroud)

mailto android webview

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

Android webview加载数据性能非常慢

嗨,我正在开发一个应用程序,因为我正在使用Android WebView.每当我启动webview活动时,从test.txt文件加载字符串html格式的数据.test.txt文件包含近2.5 MB的数据,加载test.txt文件后,如果幻灯片屏幕结束,则读取所有数据并按回.然后,随后启动webview活动需要更多时间来呈现数据.在第一次推出webview时,它花费的时间很少.在启动此活动之间,我没有收到任何错误/异常/崩溃.

我使用的是Android API等级18及以上版本

注意:我在这个问题上做了很多研究.我尝试从Android webview的解决方案Android WebView性能没有用.

我不能使android:hardwareAccelerated ="true" < - 为什么因为它有很多副作用(我仍然使用这个,但我没有在这个问题上发现任何变化).

我不能使用 webview.getSettings().setRenderPriority(RenderPriority.HIGH);

setRenderPriority() - >此方法在API级别18中已弃用.建议不要调整线程优先级,并且在将来的版本中不支持此方法.

我的DataLoader.java类

public class DataLoader extends Activity {

    private WebView webView = null;
    // Progress Dialog
    private ProgressDialog progressDialog;

    String dataContent = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.web_view);
        webView = (WebView)findViewById(R.id.text);

        // Loading webview in Background Thread
        new LoadWebView().execute();
    }

    class LoadWebView extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() { …
Run Code Online (Sandbox Code Playgroud)

android webview android-webview android-activity

33
推荐指数
2
解决办法
5万
查看次数