2014-03-28 189 views
0

我們遇到了本地廣播問題。出於某種原因,在2個機器人(我自己的電話+老闆的手機),它工作正常。在另一部手機(像我的老闆那樣的銀河s3 mini)和老闆的平板電腦上,它卻崩潰了。如果tmp.sendBroadcast命令不是馬上就會發生程序崩潰(在此之後它仍然有點)。然而,它永遠不會到達接收器。Android localbroadcast導致應用程序崩潰

public class UpdaterIntent extends IntentService { 

... 

Intent intent = new Intent("my-event"); 
      intent.putExtra("action", "update_workplaces"); 
      intent.putExtra("parameters", time); 


LocalBroadcastManager'tmp=LocalBroadcastManager.getInstance(myInst); 


      if(tmp!=null) { 
       tmp.sendBroadcast(intent); 

      } 

我已經註冊接收這樣的:

LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, 
       new IntentFilter("my-event")); 

接收機是這樣的:

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(myContext, "received message", Toast.LENGTH_SHORT).show(); 

     } 

    } 
}; 

我試圖尋找一些原因,它可能是這樣。認爲它可能是太長的參數putExtra,但即使修剪它後兩個字符串(一個在代碼中看到,一個只是一個來自服務器的日期,如「2014-03-28 12:20:02」等,所以現在在那裏不應該超過一些硬編碼限制的危險。

有什麼建議?不喜歡的任何變通辦法,以這一點,我已經拿出笨手笨腳的地獄。

+2

你有任何機會post logcat? – nikis

+0

如果你沒有正常使用它進行調試,那麼在模式下調試模式是不合需要的嗎?不得不推銷爲他們的個人設備切換模式的想法。崩潰不會發生在任何設備上這是爲了發展(pa特別是我的手機。如果它發生的話,會更容易)。也許下週我可以把手放在手機上。除非有辦法,他們可以通過電話本身通過電子郵件上傳(我懷疑他們會願意去學習如何使用adb控制檯的麻煩) – user1396135

回答

0
LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
+0

請添加一些解釋。只有代碼答案在堆棧交換中被認爲是低質量的。 –

+0

好的,我會嘗試這一個,雖然myInst是預存變量,具有「this」值。不知道爲什麼它可以解決它(這也是行不通的。忘記提及localbroadcastmanager在AsyncTask中被調用,所以這在它內部是無效的。可能它在AsyncTask中被調用導致崩潰? – user1396135