我正在尝试从 BroadcastReceiver 启动 IntentService (在 onReceive(Context context, Intent Intent) 函数中):
Intent i = new Intent(context, RegService.class);
i.putExtra("user_id", userId);
i.putExtra("device_id", "bla");
context.startService(i);
和RegService类似
public class RegService extends IntentService {
public RegService(String name) {
super(name);
}
public RegService(){
super("RegService");
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
String c2dm_registration_id = intent
.getStringExtra("c2dm_registration_id");
String token = intent.getStringExtra("token");
String userId = intent.getStringExtra("user_id");
String device_type = "android";
try {
JSONObject object = RestClient.sendC2DMRegistrationId(
c2dm_registration_id, device_type,
token, userId);
} catch (Exception e) {
e.printStackTrace();
}
}
}
但我无法进入RegService中的onHandle(我通过了第一个代码context.startService(i);但我无法进入onHandle,没有消息)。有人有相同的经历吗?有什么解决办法吗? 我在 list 中有
<service
android:enabled="true"
android:name=".c2dm.RegService" />
最佳答案
当我的 IntentService 在 list 中仅使用其类名进行声明时,我无法从广播接收器中调用它。然后我给出了全名,例如:
<service android:name="com.abc.def.services.DummyService" />
这成功了,我能够从广播接收器中调用这个 IntentService。
关于android - IntentService 不从 BroadcastReceiver 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245396/