java - 警报管理器导致应用程序崩溃
问题描述
显然,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);
}
}
应用程序本身会在您登录并同步时发送当前位置,但如果手机从位置移动一点点,应用程序就会崩溃。
解决方案
推荐阅读
- php - 表单更新时从下拉列表中检索数据
- android - Flutter Dio 无法发出 POST 请求
- swiftui - SwiftUI 三元条件错误?
- c++ - 如果用户在数字中输入字符,如何重新提示用户?
- python - 当有重复项时,如何制作唯一的 col 和 row 并将它们的值映射为矩阵?
- protractor - 以下标签的最佳定位器是什么?
- python - Python 使用 map 和 os.remove 删除多个文件
- javascript - 如何在基类中实现 ES6 javascript 单例函数
- azure-devops - 无法从 Azure DevOps Build Pipeline 中的 Azure PowerShell 任务将 Key Vault 机密作为纯文本读取
- html - Flexbox - 连续两列