代码之家  ›  专栏  ›  技术社区  ›  Nick Jones

xamarin在OREO打瞌睡时,当BroadcastReceiver启动时,Android应用程序崩溃

  •  0
  • Nick Jones  · 技术社区  · 6 年前

    我有一个提醒应用程序,需要显示及时提醒,即使手机是在打瞌睡模式。在使用android7.1sdk进行编译时,这似乎没什么问题。 我的BroadcastReceiver在启动时得到一个WAKE_锁,并在finally子句中释放它。它还将活动记录到本地SQLLite数据库(用于调试) 我现在改为用android8.1sdk编译,仍然可以正常工作 然而,当手机进入打瞌睡状态时,应用程序会在警报的适当时间崩溃。我的日志语句(OnReceive中的第一行)没有被调用。

            TaskScheduler.UnobservedTaskException += ReportUnobservedTaskException;
            AppDomain.CurrentDomain.UnhandledException += ReportUnhandledException;
            AndroidEnvironment.UnhandledExceptionRaiser += ReportThrowableEvent;
    

    有人能告诉我为什么会失败,在哪里失败,或者我怎样才能更好地调试它? 自从将8.1sdk迁移到编译之后,感觉像是一个变化,但是我看不出有什么变化会影响到这一点。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Nick Jones    6 年前

    回答我自己的问题以防对别人有帮助。

    对logcat的研究表明,这里的问题是当调用广播接收器时,应用程序没有初始化。

    logcat显示了以下信息: android.runtime.JavaProxyThrowable: System.InvalidOperationException:你必须打电话

    似乎有一个预定的作业正在使应用程序崩溃,因此当警报触发时,接收器没有初始化,无法处理消息。

    下一个调查是为什么预定的作业失败。。。。