問題タブ [android-anr-dialog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1605 参照

android - 一時的にループする Android コードの実行

起動を完了し、ユーザーが特定のタスクを完了するまで while ループを実行する Android アプリを作成したいと思います。次に、コードは別の関数を実行して、ユーザーがタスクを正しく完了したことを確認します。これについてどうすればいいですか。onCreate、onStart、および onResume に while ループを入れようとしましたが、すべての while ループが GUI を描画せずに永遠に実行されたため、タスクを完了できなくなりました (また、ANR メッセージが表示されることもあります)。そのアクティビティの開始直後に実行され、起動を妨げないようにするには、while ループをどこに配置すればよいですか?

ありがとう、

アンドレギース17

編集 3-31-13 2:45 PST:

そこで、RyPope のアドバイスを受けて新しいスレッドを作成し、メイン スレッドから関数を呼び出していますが、それは気に入りません。ここにすべての私のコードがあります:

` public class MainActivity extends Activity {

これが実行され、ビューがフォーカスを要求しようとするとクラッシュし、次の logcat 出力が得られます。

03-31 14:46:54.803: E/AndroidRuntime(10922): FATAL EXCEPTION: Thread-4197 03-31 14:46:54.803: E/AndroidRuntime(10922): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4062) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.ViewRootImpl.invalidateChild(ViewRootImpl.java:730) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:779) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4005) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.invalidate(View.java:8605) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.onFocusChanged(View.java:3884) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.widget.TextView.onFocusChanged(TextView.java:8281) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.unFocus(View.java:3814) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.ViewGroup.requestChildFocus(ViewGroup.java:530) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.handleFocusGainInternal(View.java:3706) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.requestFocus(View.java:5402) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.requestFocus(View.java:5352) 03-31 14:46:54.803: E/AndroidRuntime(10922): at android.view.View.requestFocus(View.java:5330) 03-31 14:46:54.803: E/AndroidRuntime(10922): at com.thirteenbit.driveSafe.MainActivity.checkInputs(MainActivity.java:51) 03-31 14:46:54.803: E/AndroidRuntime(10922): at com.thirteenbit.driveSafe.MainActivity$1.run(MainActivity.java:26) 03-31 14:46:54.803: E/AndroidRuntime(10922): at java.lang.Thread.run(Thread.java:856)

この苦境を解決した人はいますか?

0 投票する
1 に答える
1016 参照

android - Galaxy S2 の ANR TextureView (GPU ドライバーの問題?)

OpenGL ビデオ ストリームを再生する ListView 内に複数の TextureView があります。このコードは、Nexus 4 (4.2)、Galaxy S3 (4.1)、および HTC One (4.0.3) で正常に動作します。ただし、opengl スレッドの実行中 (デッドロック) に S2 (SPH-D710VMUB、Virgin Mobile、4.0.4) でリストビューをスクロールしようとすると、ANR が発生します。ANR トレースを以下に示します (リストビューで isHardwareAccelerated() = true)。

また、GLSurfaceView を使用して同じ openGL コードを処理する場合は正常に動作しますが、ICS デバイスの同じウィンドウ内の複数の SurfaceView で Z オーダーが台無しになることにも注意してください。GLTextureView は命令によって変換されます GLSurfaceView から TextureView への変換 (GLTextureView 経由)

編集 1: GLTextureView の別の実装を試してみましたが、正確な行を見つけることができました。"eglSwapBuffers(EGLDisplay ディスプレイ、EGLSurface サーフェス);" 何らかの理由で S2 でブロックされます。

誰かが気づいた: http://vec.io/posts/a-workaround-to-fix-opengl-eglswapbuffers-freezing glFinish(); が必要です。何か案が?

編集 2: glFinish() または eglWaitGL() を追加しても役に立ちません。:(関係なくすぐに戻ってくると思います....

編集 3: https://github.com/eaglesakura/gltextureviewを使用して再現するには: https://github.com/eaglesakura/gltextureview/issues/1を参照してください。

編集 4: 誰かが不思議に思っている場合、これは私の GLTextureView の実装です ( https://github.com/edisonw/jjm ​​peg/tree/jjmpeg-1.0-dev/jjmpeg-android/src/com/edisonwang/android/player ) また、FFMpeg 再生のものも含まれています。

編集 5: Qualcomm Adreno 200 シリーズのバグの可能性があることが判明しました: https://developer.qualcomm.com/forum/qdevnet-forums/mobile-gaming-graphics-optimization-adreno/11525

これをデバッグする方法や、なぜそれが起こるのかについてのアイデアはありますか?

0 投票する
1 に答える
937 参照

android - UI スレッドで DownloadManager を照会しても問題ありませんか?

DownloadManager にはquery()メソッドがあります。私の質問は、このメソッドを UI スレッドで呼び出してもよいのか、それともバックグラウンド スレッドからのみ呼び出す必要があるのか​​ということです。

それを呼び出すと、ANR が発生する可能性がありますか?

0 投票する
0 に答える
604 参照

android - 開発コンソールの ANR、アプリへの痕跡はありません

開発コンソールで以下の ANR レポートを受け取りましたが、アプリへの痕跡は含まれていませんでした。このレポートは 1 回しか受け取っていないので、あまり心配していませんが、この ANR の原因は何なのか気になります。任意のポインタをいただければ幸いです。

0 投票する
1 に答える
868 参照

android - 新しい画面を開いて ANR を修正する方法

ボタンで新しい画面を開くと、アプリが応答せず、ANR が表示されません。これは、ページの読み込みにアプリのコストがかかるためですが、問題を解決する方法がわかりません。

古いAndroidデバイスで動作しますが、私のデバイスではアプリが停止しています:'(

さらに情報が必要な場合は、お問い合わせください ;)

Android 4.1.1の最新バージョンでHTC one Xを実行しています。無料で音楽を聴いてダウンロードできるアプリがあり、1つのレイアウトで80ビューを超える多くのビューがあり、それが問題です。

私はあなたにコードを与えることができますが、Android 3.3.7ではSamsung Galaxy miniですべて正常に動作するため、私のコードはすべて機能しています。問題は、5 秒後に ANR が自動的にポップアップすることを読んだので、アプリケーションに新しい画面を開くためにより多くの時間を与えたいことです。

ログキャット:

xml ファイル:

.java:

アンドロイド マニフェスト:

0 投票する
0 に答える
354 参照

android - アプリケーションがアイドル状態のときに ANR の問題を処理する方法

私の BB10 移植 Android アプリケーションは、15 分間アイドル状態のままにすると、この ANR の問題が発生します。このシナリオの処理方法。

私のデバイスでは再現できませんが、クライアント デバイスではこの問題が発生しています。この問題を再現できません。

0 投票する
1 に答える
940 参照

android - logcat テキストを Android Eclipse にインポートする方法

プログラムで取得したlogcatツールAndroid/Eclipseでlogcatテキストを開く方法.通常のテキストファイルとして読み取るには、読みにくいです.ANRの問題の性質を見つけようとしています.logcatツールで見ればAndroid Eclipseの場合、認識しやすいです。

0 投票する
3 に答える
4915 参照

android - ANR スタック トレースの解釈

Android の PAHO ライブラリから MQTT クライアントを実装しています。ときどき、メッセージを公開しようとしたときにアプリケーションがフリーズし (私が思うに)、何が起こっているのか理解できません。

また、長文になることをあらかじめお詫び申し上げます。重要なビットが何であるかは本当にわかりません.SO「スポイラー」タグ>! は詳細を隠すために機能しません.

MQTT クライアントは別のスレッドで動作していますが、UI スレッドから mqtt クライアント インスタンスを呼び出しています。おそらくこれはロックアップを引き起こしますか?代わりに、クライアントをスレッドのインスタンスとして定義し、アクションをクライアントに転送するスレッド内のメソッドを呼び出す必要がありますか?

アプリがハングアップすると、しばらくすると ANR が作動し、アプリを閉じるように求められます。これを行うと、/data/anr/traces.txt からプロセスの次のスタック トレースを取得します。

厳密モードをオンにすると、ディスク書き込みについて警告するトレースがいくつか得られますが、どれも特に長くはありません。これらは厳密なモード トレースです:

編集:これがStrictModeを有効にする方法です

編集 2: 今後の参考のために、問題の原因を追加するために、検索エンジンが見つけられるように、ここに何かを入力する必要があると考えました。

問題は、私たちが持っていた Node.JS ベースのブローカー mqttjs にあることが判明しました。これは私たちの実装に過ぎない可能性があります。mqttjs 開発者の例はテストしていません。特定の数のメッセージが公開された後、ブローカーはトークンの公開と返却を停止しました。MQTT クライアントは別のスレッドで実行されていましたが、UI スレッドから呼び出されたため、いくつかの問題が発生しました。

とにかく、Mosquitto に変更し、今ではすべてがうまく機能しています。

0 投票する
0 に答える
894 参照

android - ANR なしで MediaPlayer の準備を停止するにはどうすればよいですか?

MediaPlayer を使用してオンライン トラックを再生していますが、問題が発生しました。

最初のトラックの準備中に (prepareAsync() の後、onPrepared() の前に)、2 番目のトラックを再生しようとしました。では、ANR なしで MediaPlayer の準備を停止するにはどうすればよいですか? 誰か助けて。ありがとう!