2

我就是不明白这里有什么问题。

活动.java:

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

服务.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;
}
...

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

4

2 回答 2

5

把这条线放进Log.d("TEST", intent.getStringExtra(KEY_TEST));去,

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

编辑:

有关服务生命周期如何遵循的更多信息,请查看此服务生命周期

于 2011-11-18T12:39:17.230 回答
0

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

于 2018-03-07T11:06:07.697 回答