2014-03-28 141 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