首页 > 解决方案 > 警报管理器导致应用程序崩溃

问题描述

显然,AlarmManager 是应用程序崩溃的原因。当执行 setExactAndAllowWhileIdle 方法时,应用程序停止工作。

我正在开发一个应用程序来收集用户的位置,并且我正在使用 AlarmManager 来安排何时收集要通过 REST 发送的位置。它在以前的 Android 版本中运行良好,但在 Android 8(更具体地说是在 LG K12 上)进行测试时,出现了这个崩溃问题。我尝试在整个代码中放置“try-catch”,但没有一个触发。

应用程序本身会不断检查用户是否在移动,并且只有在移动了一定距离时才会发送位置。我注意到,如果我不动,应用程序不会崩溃。

public static void startInMiliSeconds(Context ctx, String action, AlarmManager manager, long timeInMiliseconds) {
   Intent intent = new Intent(action);
   PendingIntent pending = PendingIntent.getBroadcast(ctx, 0, intent, 0);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        manager.setExactAndAllowWhileIdle(AlarmManager.RTC, timeInMiliseconds, pending);
    } else {    
        manager.setExact(AlarmManager.RTC, timeInMiliseconds, pending);
    }
}

应用程序本身会在您登录并同步时发送当前位置,但如果手机从位置移动一点点,应用程序就会崩溃。

堆栈跟踪

标签: javaandroidalarmmanagerandroid-alarms

解决方案


推荐阅读