如果我只用一个简单的吐司运行我的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中搜索错误,但它似乎是空的。
答案 0 :(得分:1)
你可以运行任何代码,但是如果你在主线程上运行的时间太长(我认为它是10秒,但这取决于什么版本)你会得到一个应用程序无响应(ANR)中断,你得到杀害。这应该会出现在日志中。通过try / catch来捕获代码,捕获所有内容并查看所获得的内容。
如果您的时间不够用,[IntentService] /http://developer.android.com/reference/android/app/IntentService.html)会对您有所帮助。在AsyncTask执行也可能就足够了,但这样可以减少保持流程存活的工作量。