gpt4 book ai didi

android - 在终止的应用程序中设置警报管理器的 nullPointerException

转载 作者:行者123 更新时间:2023-11-29 02:37:25 30 4
gpt4 key购买 nike

我想通过警报管理器启动我的服务。我写了下面的代码。当我的应用程序处于后台或前台时,这段代码工作正常,但是当我终止我的应用程序(我的意思是从最近的应用程序中刷应用程序)时,程序会出错。我不知道我的问题是什么以及如何解决。

错误:

Caused by: java.lang.NullPointerException at com.company.test.helper.ServiceSchedular.startService(ServiceSchedular.java:74)

我有一个从 Application 扩展的类,如下所示:

public class KITILApplication extends Application{

private static Context context;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
ACRA.init(this);
ORMDroidApplication.initialize(this);
KITILApplication.context=getApplicationContext();
}

public static Context getappContext(){
return KITILApplication.context;
}
}

我的 ServiceSchedularService 用于安排启动服务的警报如下:

public class ServiceSchedular {
//Called from my main activity
private ServiceSchedular() {
alarmManager = (AlarmManager) KITILApplication.getappContext().getSystemService(Context.ALARM_SERVICE);
}
private static void startService(Date startDate) {
uniqueIdForStart = (int) Calendar.getInstance().getTimeInMillis();
//PlEASE NOTICE: I checked my application via both of startintent(comment startIntent and startIntent)
Intent startIntent = new Intent(KITILApplication.getappContext(), LocationService.class);
//Intent startIntent = new Intent("com.company.test.START_SERVICE");
PendingIntent startPendingIntent = PendingIntent.getService(KITILApplication.getappContext(), uniqueIdForStart, startIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//I get error from below line !! Line = 74
alarmManager.set(AlarmManager.RTC_WAKEUP, millisToStartDate, startPendingIntent);
stopService(startDate);
}

public static void checkNextPeriod() {
.
.
startService(new Date(millisDate));
}
}

我有一个名为 checkNextPeriod 的 broadcastReciever,在 checkNextPeriod 中,我调用了 startService 方法。

AndroidManifest.xml:

<service android:name=".Service.LocationService">
<intent-filter>
<action android:name="com.company.test.START_SERVICE"></action>
</intent-filter>
</service>

我不知道我的问题是关于 alarmManager 对象或 intent 对象或应用程序上下文或其他东西。请帮我。

最佳答案

你的问题在这里:

 private ServiceSchedular() {
alarmManager = (AlarmManager) KITILApplication.getappContext().getSystemService(Context.ALARM_SERVICE);
}

不要在构造函数中这样做。只需在需要时调用 getSystemService()

关于android - 在终止的应用程序中设置警报管理器的 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46276757/

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