Android 服务不';未收到意向书/附加文件

Android 服务不';未收到意向书/附加文件,android,service,android-intent,extras,Android,Service,Android Intent,Extras,我就是不明白这里怎么了 Activity.java: ... Intent intent = new Intent(Activity.this, Service.class); intent.putExtra(Service.KEY_TEST, "123456789"); startService(intent); ... ... private Intent intent; public static final String KEY_TEST; @Override public void

我就是不明白这里怎么了

Activity.java:

...
Intent intent = new Intent(Activity.this, Service.class);
intent.putExtra(Service.KEY_TEST, "123456789");
startService(intent);
...
...
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;
}
...
Service.java:

...
Intent intent = new Intent(Activity.this, Service.class);
intent.putExtra(Service.KEY_TEST, "123456789");
startService(intent);
...
...
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;
}
...
服务显然没有收到活动发送的额外信息。当我尝试获取之前发送的任何额外信息时,应用程序force关闭,LogCat给出NullPointerException。当我删除试图获取额外信息的行时,应用程序不会强制关闭,但我显然也不会收到额外信息。

将这行代码放到Log.d(“TEST”,intent.getStringExtra(KEY_TEST))

onStartCommand(Intent-Intent,int-flags,int-startId)
method

编辑:

...
Intent intent = new Intent(Activity.this, Service.class);
intent.putExtra(Service.KEY_TEST, "123456789");
startService(intent);
...
...
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;
}
...

有关如何遵循使用寿命周期的更多信息,请参阅此

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

会出现什么错误?会发生什么?什么事情没有发生?很难说出你想问什么问题。请阅读我的问题标题和代码中的注释。行
Log.d..
force关闭应用程序。LogCat抱怨NullPointerException,因此没有收到额外的消息。当我删除行时,没有强制关闭,但我显然也没有收到额外的内容。你应该在你的问题中特别写,而不是在标题或代码块中。我认为每个人都应该阅读标题和问题的内容。我会修改这个问题。我不敢相信我竟然做出了这样的愚蠢举动。我想这就是3个小时不间断编码后的情况。很有魅力。在我接受你的问题之前有3分钟的时间限制。在我的例子中,为什么在onCreate中接收额外数据不起作用?因为您的意图是由onStartCommand()方法中的服务接收的,而不是在onCreate()中,这就是为什么。快乐编码…-)onStartCommand仍然在onCreate之前被激发,对吗?我很困惑为什么我不能在onStartCommand中设置intent变量,并在onCreate中使用它。您将更好地了解服务的工作原理。