我需要在应用启动时向我的服务发送一些数据。我将数据放入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);
}
};
答案 0 :(得分:1)
所以我的服务没有收到任何意图
服务不接收广播。 BroadcastReceivers
接收广播。
更新:据推测,您的Service
尚未在您的onCreate()
活动中投放,并且您在startService()
之间的某个时间呼叫onCreate()
当你的延迟sendBroadcast()
被召唤时。