2012-10-19 40 views
1

如果我運行我的onRecieve()方法只用一個簡單的吐司,我的應用程序運行。但是,當我嘗試執行一個循環,然後顯示敬酒時,我的程序崩潰。有沒有說我不能在onRecieve()方法中執行循環?運行一個方法在BroadcastReciever中工作,但然後循環方法失敗

@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

你可以發佈完整的方法嗎?它看起來像一個無限循環。 – xfx

+0

是的,更新我的代碼。對不起 – EGHDK

+0

我不能說這個代碼的原因和沒有日誌,我想它可能是1.太多的數據,堆棧溢出。 2.空指針3.一些代碼行必須以不同的線程運行 – xfx

回答

1

你可以運行任何代碼,但如果運行時間過長的主線程(我認爲這是10秒,但要看是什麼版本),你會得到一個應用程序無響應(ANR)中斷,和你被殺死。這應該顯示在日誌中。圍繞你的代碼通過try/catch捕捉所有,看看你得到什麼。

如果您用完[IntentService] /http://developer.android.com/reference/android/app/IntentService.html)將會對您有所幫助。這也可能足以在AsyncTask中執行,但不會讓您的進程保持活躍狀態​​。

+0

好的,我會試試。但是我只有3條記錄,所以我不明白爲什麼它會停滯不前。 – EGHDK

+0

然後添加日誌並捕獲潛在的異常以查看發生了什麼。 –

+0

Hrm ...好的,會做的。 – EGHDK

相關問題