sendBroadcast的行为

时间:2014-01-26 15:24:51

标签: android handler

我需要在应用启动时向我的服务发送一些数据。我将数据放入Intent,在sendBroadcast(intent)我的活动方法中投放onCreate。所以我的服务没有收到任何意图。 但是如果我在Handler.post中使用Runnable和自定义onCreate,一切正常。 有人能解释我这么奇怪的行为吗?

根本不起作用:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    broadcastIntent = new Intent(BROADCAST);
    broadcastIntent.putStringArrayListExtra("URLs", alURLS);
    sendBroadcast(broadcastIntent);
}

完美运作:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    broadcastIntent = new Intent(BROADCAST);
    broadcastIntent.putStringArrayListExtra("URLs", alURLS);
    hDelayedPost = new Handler();
    hDelayedPost.post(rHandleDelayedSendBroadcast);
}

private Runnable rHandleDelayedSendBroadcast = new Runnable() {
    @Override
    public void run() {
        sendBroadcast(broadcastIntent);
    }
};

1 个答案:

答案 0 :(得分:1)

  

所以我的服务没有收到任何意图

服务不接收广播。 BroadcastReceivers接收广播。

更新:据推测,您的Service尚未在您的onCreate()活动中投放,并且您在startService()之间的某个时间呼叫onCreate()当你的延迟sendBroadcast()被召唤时。