1

onReceive()単純なトーストだけでメソッドを実行すると、アプリが実行されます。しかし、ループを実行してからトーストを表示しようとすると、プログラムがクラッシュします。メソッドでループを実行できないということはありますonReceive()か?

  @Override
        public void onReceive(Context ctx, Intent intent) {
            DBAdapter havetododb = new DBAdapter(ctx);
            Cursor cursor = havetododb.fetchAllItems();
            if (cursor.moveToFirst()) {
                do {
                    String title = cursor.getString(cursor.getColumnIndex("item"));
                    Toast.makeText(ctx, title, Toast.LENGTH_LONG).show();
    } while (cursor.moveToNext());
    }
    cursor.close();
}

logcat でエラーを検索しようとしましたが、空になっているようです。

4

1 に答える 1

1

任意のコードを実行できますが、メイン スレッドで実行しすぎると (10 秒だと思いますが、リリースによって異なります)、Application Not Responding (ANR) の割り込みが発生し、強制終了されます。ただし、それはログに表示されるはずです。すべてをキャッチする try/catch でコードを囲み、何が得られるかを確認します。

時間がなくなった場合は、[IntentService]/http://developer.android.com/reference/android/app/IntentService.html) が役立ちます。AsyncTaskで実行するだけでも十分な場合がありますが、プロセスを維持するための労力は少なくなります。

于 2012-10-19T10:04:37.567 に答える