在服务的 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
希望这能解决您的问题.....
摘要:
关于如何在我的 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
希望这能解决您的问题.....