【问题标题】:xamarin forms Android App crashes when BroadcastReceiver fires during Doze in OREO当 OREO 中的打盹期间 BroadcastReceiver 触发时,xamarin 形成 Android 应用程序崩溃
【发布时间】:2018-09-13 13:16:14
【问题描述】:

我有一个提醒应用,即使手机处于打盹模式,它也需要按时显示提醒。这在使用 Android 7.1 SDK 编译时似乎很好。 我的 BroadcastReceiver 在启动时获得 WAKE_LOCK 并在 finally 子句中释放它。它还将活动记录到本地 SQLLite 数据库(用于调试) 我现在已更改为使用 Android 8.1 SDK 进行编译,但一切正常 当手机未处于打盹模式时。 但是,当手机进入打瞌睡模式时,应用程序会在警报的适当时间崩溃。我的日志记录语句是 OnReceive 中的第一行,没有被调用。
我为未捕获的异常设置了陷阱,这些异常向 AppCenter 报告并在本地记录。这些适用于其他例外情况。

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

谁能告诉我这可能失败的原因和位置,或者我如何才能更好地调试它? 自从移动 8.1 SDK 进行编译以来,感觉就像是发生了变化,但我看不到任何会影响这一点的变化。

【问题讨论】:

  • logcat 中报告了什么?
  • 我是 Android 开发新手,尚未在设备上完成此操作。我会用谷歌搜索,然后回复你。
  • OK - 没有意识到 Visual Studio 中的 DeviceLog 显示了设备未连接时发生的事件(我知道,愚蠢)。
  • 看起来是写入日志数据库的行为导致了问题 - 大概是因为我还没有唤醒锁!一种观察者效应。我将在今天晚些时候使用这些日志语句进行重建并报告发生的情况。感谢您的帮助
  • NP,如果需要,请在您遇到问题时发布更新...

标签: android forms xamarin wakelock


【解决方案1】:

回答我自己的问题,以防它帮助别人。

对logcat的调查显示,这里的问题是调用Broadcast Receiver时应用程序没有初始化。

logcat 显示消息: android.runtime.JavaProxyThrowable: System.InvalidOperationException: 你必须调用 Xamarin.Forms.Init();在使用之前。

似乎计划的作业正在使应用程序崩溃,因此当警报触发时,接收器未初始化并且无法处理消息。

下一个调查是为什么计划的作业失败......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多