我有一个webview,我必须以固定的间隔更新。这是我的代码
future = executor.scheduleAtFixedRate(new Runnable()
{
@Override
public void run()
{
handler.postAtFrontOfQueue(new Runnable()
{
@Override
public void run()
{
Log.d("set " + count);
if (Build.VERSION.SDK_INT < 18) {
clearView();
} else {
loadUrl("about:blank");
}
count++;
final String html = "<div style=\"background-color: #7777FF; text-align : center; width : 100% ; height : 100%;\">" + count + "</div>"
final String base = "<html><body style='margin:0;padding:0;'>" + html + "</body></html>";
loadData(base, "text/html", Encoding.UTF_8.toString());
}
});
}
},0, 5, TimeUnit.SECONDS);
我的问题是css属性&#39; background-color:#7777FF; &#39;在第二次调用函数后停止显示。关于如何解决这个问题的任何想法?我删除了视图的清除,而不是计数没有更新。任何可以让html更新并保留所有属性的方法都会很棒。
第一次
第三次
我正在获取这些日志
06-24 09:53:36.853: D/WebView(30537): loadUrlImpl: called
06-24 09:53:36.863: D/webcore(30537): CORE loadUrl: called
06-24 09:53:36.863: D/webkit(30537): Firewall not null
06-24 09:53:36.863: D/webkit(30537): euler: isUrlBlocked = false
06-24 09:53:36.873: I/GATE(30537): <GATE-M>DEV_ACTION_COMPLETED</GATE-M>
答案 0 :(得分:0)
它与我的观点被测量的方式有关。我将on measure代码更改为此
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
final int width = MeasureSpec.getSize(widthMeasureSpec);
int height;
int desiredHeight = Math.round(width * RATIO);
if (heightMode == MeasureSpec.EXACTLY) {
height = heightSize;
} else if (heightMode == MeasureSpec.AT_MOST) {
height = Math.min(desiredHeight, heightSize);
} else {
height = desiredHeight;
}
setMeasuredDimension(width, height);
}
现在它按预期工作。