我Interceptor
在我的 Android 应用程序中使用自定义和 Retrofit 客户端,在某些特定情况下会引发异常。我正在尝试使用 Kotlin 协程使其工作。
问题是我无法处理前面提到的错误,因为在从 Interceptor 实例中抛出异常的那一刻,它会使整个应用程序崩溃,而不是在协程的try/catch
语句中被捕获。当我使用 Rx 实现时,异常完美地传播到onError
回调中,在那里我能够以我需要的方式处理它。
我想这与用于网络调用的底层线程有某种关系,请从调用的地方、在抛出异常之前的拦截器和堆栈跟踪中查看下面的日志:
2019-11-04 17:17:34.515 29549-29729/com.app W/TAG: Running thread: DefaultDispatcher-worker-1
2019-11-04 17:17:45.911 29549-29834/com.app W/TAG: Interceptor thread: OkHttp https://some.endpoint.com/...
2019-11-04 17:17:45.917 29549-29834/com.app E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.app, PID: 29549
com.app.IllegalStateException: Passed refresh token can\'t be used for refreshing the token.
at com.app.net.AuthInterceptor.intercept(AuthInterceptor.kt:33)
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能正确地从拦截器中捕获和处理这个异常?我错过了什么吗?
我需要解决以下问题:
从UnityPlayerNativeActivity
我开始标准的Android活动(可能是我的,可能是来自广告网络的广告 - 没关系).当通过按下home
按钮将游戏隐藏在顶部(而不是Unity游戏)时,作为用户,我有两种方法可以恢复它:
Recently used apps
屏幕 - 应用程序正在恢复到相同的状态,当它被最小化(这是我期望发生);UnityPlayerNativeActivity
正在恢复,失去所有其他活动,已经打开了它.这些活动以某种方式丢失(在某种程度上我并不完全知道,他们发生了什么).我的游戏逻辑取决于那里发生的过程的结果,即.我需要知道,这个特定的活动已经以任何特定的方式退出(例如给出一个回调).
你是否知道如何将这个Unity活动从启动器中带回到它之上的所有活动,因为它是在最小化它的同时?
我想了解恢复应用程序Recently used screen
和启动器之间的区别.我猜它与文件中的intent-filter部分有关AndroidManifest.xml
,它包含在UnityPlayerNativeActivity
条目中.
resume android unity-game-engine android-intent android-activity
我有以下用 Java 编写的接口方法定义:
<T extends View & ISpecificView> T getSpecificView();
Run Code Online (Sandbox Code Playgroud)
基于 Java 的消费者代码能够简单地通过调用此方法来操作此方法,并将返回值视为扩展View
类的对象,并ISpecificView
通过以下方式实现接口:
getContainer().getSpecificView().whateverTclassMethod()
Run Code Online (Sandbox Code Playgroud)
尝试在 Kotlin 中调用相同的代码时,我收到了Type inference failed: Not enough information to infer parameter T (...) Please specify it explicitly
该getSpecificView()
方法的错误。我很想明确提供类型,但我无法传递任何特定的类,因为它可能是View
实现ISpecificView
接口的类的任何祖先。通过单个View
或ISpecificView
无济于事 - 它会导致 ,Type argument is not within its bounds. Expected: View! Found ICustomView
反之亦然。
是否有可能T extends View & ISpecificView
在调用方法时在 Kotlin 中传递与 Java 的等效项,以便我可以使用它?
在 Android Studio 3.x(及之前)中,当我运行布局检查器时,视图层次结构被自动捕获并保存在一个*.li
文件中。当我在 Android Studio 4.0 中启动 Layout Inspector 时,视图层次结构没有保存在任何地方。
我可以以某种方式将视图层次结构从新的布局检查器导出到文件中,以便与他人共享吗?现在我可以说我只能*.li
在 AS 4.0 中打开文件,但不能保存它。