我想知道如何确定何时完成 WebView 加载.
让我完全定义.
这个问题的答案很糟糕:
WebViewClient.onPageFinished() - 如果有重定向加载页面,则会多次触发.它也会在页面显示之前触发.
PictureListener.onNewPicture() - 每次屏幕更改时都会触发,每次重定向都会触发AFAICT.我怎么知道哪个射击是最后一个?
WebChromeClient.onProgressChanged() - 与onPageFinished相同的问题.(在David建议以下解决方案后添加)
Thread.sleep(5000) - 应该很明显,为什么这是不可接受的.
当然,上述工作的巧妙组合将是完美的.
为什么我想知道你问这个?因为我想注入一些JavaScript 一次一次Webview是完全完成加载.
我有以下内容
String urlStr = "http://example.com/my.jpg"
String mimeType = "image/jpeg";
String encoding = null;
String pageData = ""; // This is data read in from an HttpURLConnection
webview.loadDataWithBaseURL(urlStr, pageData, mimeType, encoding, urlStr);
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我看到的只是一个蓝色问号而不是我的图像.使用loadData处理在WebView中显示图像的正确方法是什么?
编辑:
有没有办法在不传递pageData的情况下执行此操作<img src="http://example.com/my.jpg/">?如果loadData只能处理"text/html",那么loadData采用mime类型似乎很愚蠢.特别是因为javadoc列出了"image/jpeg"作为你可能传入的mime类型的例子.
RabbitMQ使用非负长(63位整数,因为仅非负数)称为传递标记来存储通过通道发送的消息数.如果您通过频道发送(2 ^ 63)+1条消息会怎样?
我想用.NET运行参数化SQL.但是当我使用AddWithValue()生成的命令时不起作用.
SqlCommand cmd = new SqlCommand("SELECT * FROM table WHERE table.name = @A")
cmd.Parameters.AddWithValue("@A", "A string");
Run Code Online (Sandbox Code Playgroud)
生成此sql命令:
exec sp_executesql N'SELECT * FROM table WHERE table.name = @A',N'@A nvarchar(10)',@A=N'''A string'''
Run Code Online (Sandbox Code Playgroud)
但是该命令不返回任何值,而以下命令返回我想要的值(即匹配一行):
SELECT * FROM table WHERE table.name = 'A String'
Run Code Online (Sandbox Code Playgroud)
第二个查询执行我期望的,我希望两个查询返回相同的结果.
我在代码中做错了什么?