永远不会调用OnHandleIntent

时间:2015-05-18 15:17:39

标签: android

我有以下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);

1 个答案:

答案 0 :(得分:0)

作为一个起点,请尝试完全删除onStartCommand回调,看看它是否解决了问题。 IntentService文档明确提到不要覆盖此方法,而是在onHandleIntent中实现所有例程,一旦从IntentService扩展,就应该自动为您调用。