我有以下IntentService
:
public class HttpMessager extends IntentService {
public HttpMessager() {
super("is frenk");
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "onStartCommand", Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "onDestroy", Toast.LENGTH_SHORT).show();
}
@Override
protected void onHandleIntent(Intent intent) {
Toast.makeText(this, "onHandleIntent", Toast.LENGTH_SHORT).show();
}
}
在这里我们有清单:
<service
android:name="doesnt.work.well.HttpMessager"
android:exported="false">
</service>
我在documentation上读到onStartCommand()
应该调用方法onHandleIntent()
而我不应该直接调用它。无论如何,这个方法(onHandleIntent()
)从未被调用,而所有其他方法都被正确调用。
我错过了什么吗?
编辑:我启动服务的地方
Intent i = new Intent(getActivity(), HttpMessager.class);
i.setAction(HttpMessager.ADD_LAMPS);
i.putExtra(HttpMessager.LAMPS, lamps);
getActivity().startService(i);
答案 0 :(得分:0)
作为一个起点,请尝试完全删除onStartCommand回调,看看它是否解决了问题。 IntentService文档明确提到不要覆盖此方法,而是在onHandleIntent中实现所有例程,一旦从IntentService扩展,就应该自动为您调用。