Androidアプリを作成しました。このアプリは正常に動作し、タブレットで期待どおりに動作します:Acer。7インチAPI21。
最近、新しいタブレットAcerを入手しました。 10インチAPI22。
現在、この行でログがスパムされています。
04-12 18:23:27.371 8776-9082/com.callbell.callbell D/Surface: Surface::setBuffersDimensions(this=0x7f9aa44000,w=800,h=1280)
画面がフリーズし、ランダムな間隔で空白になります。ログにエラーは見られませんでした。このログ行を参照できるのはここだけです。
[〜#〜] update [〜#〜]これをいくつかのデバイスで試しましたが、さまざまな成功を収めました。
問題ありません:
サムスンギャラクシータブ7 "
サムスンギャラクシータブ10 "
Acer Iconia 8 "
問題:
Acer Iconia 10 "
これらのログは、カーソル付きのEditTextがある場合に表示され、そのカーソルの点滅が画面の再描画を担当します。
Surface :: setBuffersDimensions(this = 0x7f4ccc7c00、w = 1080、h = 1920)
D/OpenGLRenderer:WorkerThread0x7f7c07f000が実行されています
私がしたとき
Android:cursorVisible="false"
これらのログはなくなりました。
したがって、スタジオ画面がこれらのログでスパムになると、開発者がUI描画パターンを確認するためのアラートになります。
このログは、画面上の何かが再描画されていることを意味します。
少数のデバイスでのみ表示されますが、使用しているデバイスに関係なく、開発者向けオプションで「ハードウェアレイヤーの更新」または「GPUビューの更新」を有効にすると、フラッシュゾーンが再描画されます。 。
さらに、問題が1つのデバイスに存在する場合、他のデバイスにも存在する可能性があります。
他の誰かがこの問題を見つけた場合は、ProgressBarのようなものがないこと、またはWebViewの読み込みが完了した後にレンダリングを停止しないようにしてください。 Xamarin.Androidでは、WebViewClientからOnPageFinishedをオーバーライドし、progressBar.Visibility = ViewStates.Gone;
を設定する必要がありました。他のいくつかのWebViewClientオーバーライド実装があるGitHubリポジトリ(私のものではない)へのリンクもあります:
public class MyWebViewClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
view.LoadUrl(url);
return false;
}
//More overrides: https://github.com/xamarin/monodroid-samples/blob/master/MonoIO/UI/MapFragment.cs
public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
progressBar.Visibility = ViewStates.Gone;
view.Visibility = ViewStates.Visible;
}
}