服务不会收到意图/额外费用

时间:2011-11-18 12:29:34

标签: android service android-intent extras

我不知道这里有什么问题。

Activity.java:

...
Intent intent = new Intent(Activity.this, Service.class);
intent.putExtra(Service.KEY_TEST, "123456789");
startService(intent);
...

Service.java:

...
private Intent intent;
public static final String KEY_TEST;

@Override
public void onCreate() {
    super.onCreate();
    Log.d("TEST", intent.getStringExtra(KEY_TEST)); // when I remove this line,
    // it works, otherwise gives NullPointerException and FC's
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    this.intent = intent;
    return START_STICKY;
}
...

服务显然没有收到活动发送的额外内容。当我尝试获取之前发送的任何额外内容时,app force关闭,LogCat给出NullPointerException。当我删除我尝试获取额外内容的行时,应用程序不会强制关闭,但我显然也没有收到额外内容。

2 个答案:

答案 0 :(得分:5)

将此行Log.d("TEST", intent.getStringExtra(KEY_TEST));放入

onStartCommand(Intent intent, int flags, int startId)方法..

修改

有关服务生命周期如何跟随的详细信息,请查看此Service Lifecycle

答案 1 :(得分:0)

onStartCommand()发生在onCreate()方法之后。