线程内的操作在 Android 上冻结 UI

Operation inside thread freezes UI on Android

我在 Android 应用中使用第三方 SDK。必须调用 SDK 上的初始化方法,该方法将应用程序上下文作为参数,如下所示:sdk.initialize(getApplicationContext())。现在这在普通设备上工作正常但是它冻结了根设备上的 UI。 SDK 供应商说这是设计使然,因为他们想阻止软件 运行 在 root 设备上运行。作为回应,我现在 运行 线程内的方法。我尝试过传统线程和 AsyncTasks,但 UI 仍然冻结。这怎么可能? SDK 可以使用应用程序上下文来阻止 UI?

简单 - SDK 使用 运行OnUIThread 检查设备是否已获得 root 权限(比方说 - 它会尝试列出目录中需要 root 权限的文件),这就是使已获得 root 权限的设备成为反应迟钝。在有根设备上 - 这可能需要时间(也许他们故意不止一次这样做,以使其不可能 运行 在有根设备上)。

在普通设备上 - 当此代码 运行s(因为应用程序没有 root 权限)时可能会抛出安全异常,这就是 SDK 知道设备没有 root 的方式。