我有一个应用程序,用户可以在其中选择他想要振动还是静音模式。从主活动中,我将数据作为 Intent 的一部分传递给服务(服务始终在运行)。
在服务的 onStartCommand 方法中,我第一次得到数据,一切正常。但是当我退出应用程序时,可能会在一段时间后再次调用服务的 onStartCommand 方法,而 Intent 中没有数据(可能是 Launcher 或 android OS 正在执行此操作)。
由于我使用 Intent 中的数据设置了一个本地字符串变量,因此当操作系统调用 onStartCommand 方法时,我得到 Null 异常。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(mode == null) {
mode = (String) intent.getExtras().get("mode");
}
return super.onStartCommand(intent, flags, startId);
}
现在我的问题是如何第一次从活动中获取数据,然后在服务类的各种成员方法中引用它。
我尝试将模式变量设为静态但同样的问题。看起来操作系统会自行决定卸载服务类,然后将其加载回来并使用普通 Intent 调用 onStartCommand。