web-dev-qa-db-ja.com

Android Studio: "フレームが利用できません"?

私はGoogleのLeanbackライブラリでAndroid TVを使用しており、リモコンのボタン(特に、MediaSession)。

そのため、BaseGridView.dispatchTouchEvent()にブレークポイントがあり、リモートボタンの1つを押すと、デバッガーは実際にそのポイントにジャンプし、通常のデバッグ情報を表示します。

ただし、数秒後にデバッグ情報が消え、「フレームが利用できません」というメッセージに置き換えられます。

他の場所ではデバッガーが正常に動作しているので、デバッガーによって引き起こされた遅延がANRとしてカウントされ、アプリが強制的に閉じられるかどうか疑問に思いましたか?

いずれにせよ、これを回避する方法はありますか?

10
david.mihola

このメッセージは、設定したブレークポイントが多すぎて、スレッドが他のスレッドからのデータを待機しているために表示されます。これを解決するには、いくつかのブレークポイントをキャンセルして、データの準備ができるのを待つことができます...

3
dan

「フレームが利用できません」というメッセージは、デバッグに使用できるフレームがこれ以上ないことを意味します。 Androidスタジオヘルプには、フレームウィンドウとその中のフレームの目的が明確に記載されています。

[フレーム]ペインでは、アプリケーションのスレッドのリストにアクセスしたり、テキストファイルにエクスポートしたり、スレッドの表示をカスタマイズしたりできます。スレッドごとに、スタックフレームを表示したり、フレームを調べたり、フレーム間を移動したり、エディターでフレームのソースコードに自動的にジャンプしたりできます。ペインの上部にあるスレッドセレクタのドロップダウンリストからスレッドを選択できます。スレッドのステータスとタイプは、スレッド名の横にある特別なアイコンとテキストのメモで示されます。

使用可能なフレームがなくなったということは、デバッグのためにすべてのフレームが閉じられていることを意味します。アプリが強制的に閉じられているか、何らかの方法でその行で誤動作していることが原因である可能性があります。ステートメントをデバッグしてみてください。その後、この動作を取り除いてください。それが役に立てば幸い

2
404error

同じ問題が発生しているので、ASを再起動するとうまくいきます。

1
Kai Wang

「フレームが利用できません」というメッセージが表示された場合は、デバッグに使用できるフレームがこれ以上ないことを意味します。フレームはAndroid Studioのデバッグの一部であり、アプリケーションで実行されているスレッドのリストにアクセスできます。これは、デバッグウィンドウに表示されるプロセスの長いリストです。つまり、何が起こっているのでしょうか。 that Android Studioは、ステップアウト時にブレークポイントを設定する前に持っていたスレッドの知識を失います。これは、デフォルトでブレークポイントを設定すると、の実行が停止するため、この場合に発生する可能性があります。すべてのスレッド。ステップアウトすると、後続のスレッドは動作する前にスレッドに依存し、アプリを閉じます。getCurrentDetailsにブレークポイントを設定しているため、OKHttpからの応答が時間内に取得されなかったと考えられます。バックグラウンドスレッドで発生しているため、2つの方法で機能させることができます。まず、ブレークポイントを右クリックして、ブレークポイントをすべてのスレッドの一時停止からそのスレッドのみに変更します。これにより、OKHttpが応答を取得できるようになります。切断される前に時間内にまたは、シフトyブレークポイントをさらに下に移動して、機能するかどうかを確認します。

0
user3198265