同僚と私は、Android Canvasオブジェクトで非常に奇妙な動作を経験しています。
初期化されたキャンバス オブジェクトを扱っており、2 台の Nexus 7 タブレット間で Fatal Signal 11 エラーが選択的に発生しています。1 つは 4.2.2 を実行して問題なく動作し、もう 1 つは 4.3 を実行してクラッシュします。私たちは、エラーが私たちの側にあるのか、それとも Android API の不具合なのか (可能性は低い) を判断することを含む、問題のトラブルシューティングを行う方法を見つけようとしています。
オブジェクトを呼び出そうとすると、エラーが発生しcanvas.getWidth()
ます。
私たちの Java コード: (おそらく重要ではありませんが、Rect は私たちのコードベースからのものであり、 ではありませんandroid.graphics.Rect
)
public Rect getViewportBounds() {
Canvas can = _diagram._canvas;
Rect vb = _viewportBounds;
if (can == null) return vb;
Point pos = _position;
int[] approxWindowVals = { (int) pos.getX(), (int) pos.getY() };
double sc = _scale;
vb._set(approxWindowVals[0], approxWindowVals[1], Math.max(can.getWidth(), 0) / sc, Math.max(can.getHeight(), 0) / sc);
return vb;
}
LogCat からの情報はこちら
08-09 16:49:14.883: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. レイアウト中の 0,0-0,0}: 2 番目のレイアウト パスの実行 08-09 16:49:14.893: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. 2 番目のレイアウト パス中の 0,0-0,0}: 次のフレームに投稿 08-09 16:49:14.923: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. レイアウト中の 0,0-0,0}: 2 番目のレイアウト パスの実行 08-09 16:49:14.943: D/abc(4083): onDraw 08-09 16:49:14.943: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. 2 番目のレイアウト パス中の 0,0-0,0}: 次のフレームに投稿 08-09 16:49:14.973: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. レイアウト中の 0,0-0,0}: 2 番目のレイアウト パスの実行 08-09 16:49:14.983: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. 2 番目のレイアウト パス中の 0,0-0,0}: 次のフレームに投稿 08-09 16:49:15.003: W/View(4083): requestLayout() が com.nwoods.go.Viewport{41dfcb08 V.ED によって不適切に呼び出されました.... ......I. レイアウト中の 0,0-0,0}: 2 番目のレイアウト パスの実行 08-09 16:49:15.033: A/libc(4083): 0x00000000 で致命的なシグナル 11 (SIGSEGV) (コード = 1)、スレッド 4083 (egressiontester)
ハードウェア構成は次のとおりです。
+---------+------------+-----------------------+ | | タブレット | アンドロイド OS | エラーに達しました | +---------+------------+-----------------------+ | | ネクサス7 | 4.2.2 | いいえ | | | ネクサス7 | 4.3 | はい | +---------+------------+-----------------------+
なぜこれが起こっているのかについて何か考えがある場合は、私に知らせてください。Canvas を再構築する必要があるかもしれませんが、Canvas と同じくらい一般的なクラスが 2 つの同一のタブレットで異なる動作をすることに、2 人ともかなり混乱しています。
ご支援ありがとうございました :)