9

このコードでAndroid ANRを強制できないのはなぜですか? ログメッセージやポップアップはありません。アプリケーションは遅延して起動されます。

[アップデート]

View.setOnClickListener または BroadcastReceiver.onReceive をスリープ状態にすることさえできません。

トリックはありますか?

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            Log.e("Test", "", e);
        }
    }
}

ストックAndroid 3.2でSamsung GT-6200Lを使用しています

4

6 に答える 6

10

onTouchEvent で試してみてください。onCreate では、アクティビティが完全に実行されていません

@Override
public boolean onTouchEvent(MotionEvent event) {
    Log.d(TAG,"onTouchEvent");  
    while(true) {}
}
于 2012-10-23T16:58:39.087 に答える
3

私は昨日同じ問題に直面しており、単純なデバッグ ビルド ANR ダイアログを使用しても表示されないことがわかりました。(UI スレッドは完全にハングしましたが。)

しかし、アプリケーションをエクスポートして適切に署名した後、ダイアログは適切にポップアップされました (上記のすべてのケースで)。ただし、ANRメッセージのポップアップを実際に妨げているものはまだわかりません。後で他の誰かがこれを明確にすることができます...

于 2013-06-14T10:48:00.803 に答える
2

使用してみてください:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int a=0;
    while(true) {
        a++;
    }       
}

あなたのコードは、セットアップが早すぎたために機能しなかった可能性があり、アクティビティがまだ完全に初期化および作成されていない可能性があります。上記のコードを使用して、アクティビティを起動し、画面をタッチまたはスワイプして、ANR ダイアログがポップアップするのを待ちます。

于 2012-10-23T16:23:29.037 に答える
0

このコードを強制 ANR に使用しました

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void force(View view){
        while(true) {}
    }

xmlファイルに簡単なボタンを作成して設定しましたandroid:onClick=force

于 2014-01-10T08:02:51.453 に答える