132

AndEngine Activityを起動しようとすると、次のエラーが発生します。

ERROR/InputDispatcher(21374): channel '4122e148 my.package.AcGame (server)' ~ Channel is unrecoverably broken and will be disposed!

アプリはクラッシュしませんが、黒い画面が表示され、デバイスが「戻る」または「ホーム」ボタンを押しても反応しません。

誰が問題が何であるか知っていますか?

4

25 に答える 25

47

このエラーが表示される最も一般的な理由の 1 つは、フォアグラウンドにないアクティビティで警告ダイアログまたは進行状況ダイアログを表示しようとしたときです。ダイアログ ボックスを表示するバックグラウンド スレッドが一時停止されたアクティビティで実行されている場合と同様です。

于 2012-12-18T06:56:28.790 に答える
7

別の UI スレッドを使用しましたか? 複数の UI スレッドを使用して、サンドイッチのように見えるようにしないでください。これを行うと、メモリ リークが発生します。

2日前に同様の問題を解決しました...

簡潔に言うと、メイン スレッドは複数の作業を行うために多くの UI スレッドを持つことができますが、UI スレッドを含む 1 つのサブスレッドがその内部にある場合、UI スレッドはその作業をまだ完了していない可能性がありますが、その親スレッドは既に作業を終了しています。これにより、メモリ リークが発生します。

たとえば... Fragment & UI アプリケーションの場合...これによりメモリ リークが発生します。

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.1

  ShowDataScreen();

getActivity().runOnUiThread(new Runnable(){

    public void run() {//No.2

Toast.makeText(getActivity(), "This is error way",Toast.LENGTH_SHORT).show();

    }});// end of No.2 UI new thread

}});// end of No.1 UI new thread

私の解決策は、次のように並べ替えます。

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.1

ShowDataScreen();

}});// end of No.1 UI new thread        

getActivity().runOnUiThread(new Runnable(){

   public void run() {//No.2

Toast.makeText(getActivity(), "This is correct way",Toast.LENGTH_SHORT).show();

}});// end of No.2 UI new thread

参考までに。

私は台湾人です。ここでもう一度お答えできてうれしいです。

于 2014-11-14T04:38:58.393 に答える
5

何かの名前strings.xmlを変更し、他のファイル(設定xmlリソースファイルとJavaコード)を変更するのを忘れた後、同様のエラー(アプリがクラッシュ)が発生しました。

IDE (android studio) にエラーは表示されませんでした。しかし、xml ファイルと Java コードを修復した後、アプリは問題なく動作しました。そのため、xml ファイルまたは定数にいくつかの小さな誤りがある可能性があります。

于 2013-10-31T02:34:38.267 に答える
5

この出力に関するソース コードは、次の場所で確認できます

void InputDispatcher::onDispatchCycleBrokenLocked(
        nsecs_t currentTime, const sp<Connection>& connection) {
    ALOGE("channel '%s' ~ Channel is unrecoverably broken and will be disposed!",
            connection->getInputChannelName());
    CommandEntry* commandEntry = postCommandLocked(
            & InputDispatcher::doNotifyInputChannelBrokenLockedInterruptible);
    commandEntry->connection = connection;
}

サイクル壊れロックが原因です...

于 2015-03-13T07:43:23.253 に答える
3

私も同じ問題を抱えていました。エラーを解決するには: エミュレーターで閉じてから、Android Studio を使用して実行します。

アプリがエミュレーターで既に実行されているときにアプリを再実行しようとすると、エラーが発生します。

基本的に、Android Studioからアプリを再度実行したため、「既存のチャネルがなくなり、すでに確立されている接続を破棄しています」というエラーが表示されます。

于 2016-05-03T04:26:31.297 に答える
2

私は同じ問題を抱えていましたが、私のものはAndroidデータベースのメモリリークが原因でした。カーソルをスキップしました。そのため、メモリリークを修正するためにデバイスがクラッシュします。Android データベースを使用している場合は、データベースからの取得中にカーソルをスキップしたかどうかを確認してください

于 2013-08-27T11:53:05.273 に答える
1

and-engineを使用してゲームを実行しているときにも発生しました。以下のコードを私のmanifest.xmlに追加した後、修正されました。このコードはメイン アクティビティに追加する必要があります。

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|mcc|mnc"
于 2014-10-15T20:17:11.210 に答える
0

私の場合、Glide ライブラリを使用していて、渡された画像が null でした。そのため、このエラーがスローされていました。私はこのようにチェックを入れました:

if (imageData != null) {
    // add value in View here 
}

そして、それはうまくいきました。これが誰かに役立つことを願っています。

于 2020-01-04T14:16:17.960 に答える
0

私にとっての問題は、アクティビティのインスタンスを定義していないことでした。

例えば:

私のクラス私の;

onCreate() {

my.getData(); }

それ以外の:

私のクラス私の;

onCreate() {

私の = 新しい Myclass(); my.getData(); }

Studio は適切な定義エラー メッセージを表示する必要があるため、これは奇妙です。

于 2021-12-03T12:20:31.270 に答える