从服务启动的 Activity 丢失了捆绑包中的 "extra"

Activity launched from a service loses the "extra" from the bundle

调用代码(运行 在服务中):

Intent textIntent = new Intent(this, TextActivity.class);
textIntent.putExtra("text_seq", message.xfer.seq);
textIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(textIntent);

调用代码(在TextActivity):

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    Log.d(TAG, "" + bundle.getInt("text_seq"))
    ...

事实上,整个包都丢失了 - 上面的代码在调用 bundle.getInt().

时抛出 NPE

我确定我错过了一些明显的东西...

您尝试过使用 getIntent().getInt("text_seq") 吗?

您正在阅读的捆绑包不是为了这个目的。作为per docs

void onCreate (Bundle savedInstanceState)

Bundle: If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle). Note: Otherwise it is null.

如果您需要额外的服务,您需要致电:

Bundle extras = getIntent().getExtra();

然后您可以尝试获取您的值:

int myVal = extras.getInt(key);

或者您可以尝试使用:

int myVal = getIntent().getIntExtra(key, defaultVal);

像这样获取您的礼包

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
   Bundle intentBundle = getIntent().getExtra();
    Log.d(TAG, "" + intentBundle.getExtra(“text_seq"))
}

您正在使用的捆绑包是 savedInstanceState 您可以阅读更多相关信息 here

你需要用到的是这个:

Bundle intentBundle = getIntent().getExtra();

由于您将捆绑包添加到 Intent extras,因此您需要从 getIntent().getExtra()

中获取它

您也可以获得这样的单品:

getIntent().getIntExtra("text_seq", defaultValToReturn);