gpt4 book ai didi

android - 如何在启动服务时将 Intent 传递给它(但只是有时)

转载 作者:行者123 更新时间:2023-11-30 04:42:42 28 4
gpt4 key购买 nike

所以,我正在为一个学校项目开发 Android 应用程序,并在开发快结束时遇到了一个奇怪的错误。应用程序的一部分是在后台运行并经常与服务器 checkin 的服务,但需要有一个选项是在后台运行该服务还是使用手动 checkin 。为了避免重复代码,我尝试做的是在服务以 bool 值开头时将 Intent 传递给服务,类似于“强制更新一次,然后停止”。但是,我的服务似乎没有得到这个值。

启动服务的代码:

Intent intent = new Intent(this, EmpCheckinService.class);
intent.putExtra("singleCheckInOnly", true);
intent.putExtra("locationString", location);

startService(intent);

以及服务类中的代码:

// This is the old onStart method that will be called on the pre-2.0
// platform. On 2.0 or later we override onStartCommand() so this
// method will not be called.
@Override
public void onStart(Intent intent, int startId) {
examineIntent(intent);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
examineIntent(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}

private void examineIntent(Intent intent) {
try {
singleCheckInOnly = intent.getExtras().getBoolean("singleCheckInOnly", false);
locationString = intent.getExtras().getString("locationString");
} catch (Exception e) {
// Don't need to do anything here, just prevent from crashing if the keys aren't found
}
}

如您所见,我提供了 onStart 和 onStartCommand 以允许它在 1.5 或 2.1+ 设备上工作,但它从来没有达到这些功能中的任何一个。谁能在这里指出我正确的方向?

编辑:我想我找到了问题所在。 onCreate 是否在 onStartCommand 之前调用?

最佳答案

Is onCreate called before onStartCommand?

是的。

如果您:

第 1 步:创建 IntentService 而不是 Service,并且

第 2 步:使用 AlarmManager 向服务发送 Intents 以与服务器进行定期检查

那么,从服务的角度来看,基于定时器的检查和用户发起的检查没有区别。

关于android - 如何在启动服务时将 Intent 传递给它(但只是有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667183/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com