在服务的 onStartCommand 中检索 Intent 的旧值

Retrieve old value of Intent in onStartCommand of Service

摘要:

关于如何在我的 onStartCommand 方法中检索( 或保留 Intent 信息,我有一个小问题。

场景:

我的 MainActivity 使用 String 值启动服务 ...

Intent intent = new Intent(this, Service.class);
intent.putExtra("key", getIntent().getStringExtra("key"));
startService(intent);

... 然后我的 Service 使用这个 Intent 值 — intent.getStringExtra("key") — 用于某些事情。

问题:

但是...问题是当用户(或系统)从内存中删除 activity 并且我的服务正在重新启动时,Intent 将为空。 (START_STICKY)

我想用 Preferences 来解决这个问题,但是...我不喜欢这种方式。

有人知道解决这个问题的好方法吗?可能是我概念有问题,自己不知道?

START_STICKY 不会解决您的问题,因为在您的服务重新启动后,系统不会重新传递您的意图,并且在您的情况下它将为空。 要获得先前的意图,您需要从服务的 onStartCommand return START_REDELIVER_INTENT

有关详细信息,请阅读 this

希望这能解决您的问题.....