运行方法在BroadcastReceiver中工作,但循环方法失败

时间:2012-10-19 09:53:58

标签: java android broadcastreceiver

如果我只用一个简单的吐司运行我的onRecieve()方法,我的应用就会运行。但是当我尝试执行循环然后显示吐司时,我的程序崩溃了。有什么说我不能用onRecieve()方法执行循环吗?

  @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中搜索错误,但它似乎是空的。

1 个答案:

答案 0 :(得分:1)

你可以运行任何代码,但是如果你在主线程上运行的时间太长(我认为它是10秒,但这取决于什么版本)你会得到一个应用程序无响应(ANR)中断,你得到杀害。这应该会出现在日志中。通过try / catch来捕获代码,捕获所有内容并查看所获得的内容。

如果您的时间不够用,[IntentService] /http://developer.android.com/reference/android/app/IntentService.html)会对您有所帮助。在AsyncTask执行也可能就足够了,但这样可以减少保持流程存活的工作量。