我得到的报道称,在一些(并非所有)HTC Desire HD(FRF91,2.2)和HTC EVO 4G(PC36100 | 3.29.651.5,2.2)上,TextToSpeech.OnInitListener.onInit(int)被重复调用(在少数几个空间内超过1500次)秒)在同一个对象上.任何我的其他用户(或与其他Desire HD用户)AFAICT不会发生此问题.
代码是:
TextToSpeech tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
private int mCallCount = 0; // trying to investigate potential infinite loops
@Override
public void onInit(int status) {
if ((mCallCount % 100) == 1) {
// report this
}
mCallCount++;
}
});
Run Code Online (Sandbox Code Playgroud)
任何想法?
编辑:我也试过调用该shutdown()方法(第一次检测到多个侦听器调用)但这似乎没有帮助.
启用 StrictMode 后我注意到了这一点:
2021-05-08 11:09:42.854 14347-14773/com.myapp D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. Callsite: close
at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1929)
at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:305)
at sun.nio.fs.UnixDirectoryStream.finalize(UnixDirectoryStream.java:240)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291)
at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278)
at java.lang.Daemons$Daemon.run(Daemons.java:139)
at java.lang.Thread.run(Thread.java:923)
2021-05-08 11:09:42.855 14347-14773/com.myapp D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. Callsite: close
at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1929)
at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:305)
at …Run Code Online (Sandbox Code Playgroud) 我已经看到了一些与此类似但没有答案的其他问题.
从纵向旋转到横向(任一方向)再返回,我们得到对onConfigurationChanged()的有用调用.
但是,当从景观旋转到横向(通过180度)时,onConfigurationChanged()不会被调用.
我已经看到过使用OrientationEventListener,但这对我来说似乎很有趣,因为你可以快速旋转而不会触发显示方向的改变.
我已经尝试添加布局更改侦听器,但没有成功.
那么问题是,如何可靠地检测横向方向的这种变化?
我一直在收到一些小米设备(例如Mi 2,运行API级别21)没有显示叠加层的报告.我的应用针对API 23.
有几个 帖子在那里对此.似乎MIUI设备在安装时不启用此权限(与其他Marshmallow之前的设备不同).
不幸的是,Settings.canDrawOverlays()仅适用于Android 23+.
new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION", packageName)但我没办法测试这个./Volumes/SSD/.gradle/caches/modules-2/files-2.1/com.squareup.okhttp3/okhttp/3.10.0/7ef0f1d95bf4c0b3ba30bbae25e0e562b05cf75e/okhttp-3.10.0.jar: D8: Type `org.conscrypt.Conscrypt` was not found, it is required for default or static interface methods desugaring of `okhttp3.internal.platform.Platform okhttp3.internal.platform.ConscryptPlatform.buildIfSupported()`
Run Code Online (Sandbox Code Playgroud) 我有一个带有 3 个模块的活动应用程序 - app, list& detail。我的活动在app模块中,它托管唯一的NavHostFragment. 所有模块都有自己的导航图。detail的起点需要一个长参数。app的图是其他图的父图:
<?xml version="1.0" encoding="utf-8"?>
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_main"
app:startDestination="@id/nav_list">
<include app:graph="@navigation/nav_list" />
<include app:graph="@navigation/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
但默认情况下,无法向编辑器上的包含图形添加操作:
我可以在 xml 文件中添加一个全局操作,然后在编辑器中显示:
<?xml version="1.0" encoding="utf-8"?>
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_main"
app:startDestination="@id/nav_list">
<include app:graph="@navigation/nav_list" />
<include app:graph="@navigation/nav_detail" />
<action
android:id="@+id/action_global_detailFragment"
app:destination="@id/nav_detail" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
我不想使用全局操作,而是添加适当的actions 来封装导航模式。嵌套图已经包含它们的导航逻辑,可能只需要输入作为入口点。我不确定这是否不受支持并且我遗漏了一些东西,否则为什么不呢?在两个或多个包含的图形之间导航的方法是什么?
android android-navigation android-architecture-components android-architecture-navigation
我们的代码在Canvas上执行非常简单的操作(完全在UI线程中):drawText,translate,save,restore.
偶尔,我们得到这个(在Nexus 4上运行4.3):
W/Adreno200-ES20(22118): <gl_draw_error_checks:550>: GL_INVALID_OPERATION
D/OpenGLRenderer(22118): GL error from OpenGLRenderer: 0x502
E/OpenGLRenderer(22118): GL_INVALID_OPERATION
Run Code Online (Sandbox Code Playgroud)
并且相应的文本不会绘制到画布上.
一个问题是它是随机发生的.代码将在没有错误的情况下工作,可能会有10-20个调用,然后会出现此错误,然后再返回正常工作,再次在错误之前再进行10-20次调用.
编辑:这是跟踪:
glEnable(cap = GL_BLEND)
glViewport(x = 0, y = 0, width = 768, height = 1184)
glStartTilingQCOM(x = 0, y = 0, width = 768, height = 1134, preserveMask = 0)
glPixelStorei(pname = GL_UNPACK_ALIGNMENT, param = 1)
glBindTexture(target = GL_TEXTURE_2D, texture = 37)
glPixelStorei(pname = GL_UNPACK_ROW_LENGTH, param = 2048)
glTexSubImage2D(target = GL_TEXTURE_2D, level = 0, xoffset = 1400, yoffset = 61, width = 448, …Run Code Online (Sandbox Code Playgroud) 我想使用Canvas.drawText()来显示多色文本.更具体地说,我想突出显示传递给drawText()方法的文本的子字符串.
文本采用具有0个或更多ForegroundColorSpan对象的SpannableString形式.
看看Canvas代码,看来对传递的CharSequence进行.toString()调用意味着这是不可能的.
还有另一种方法吗?
编辑:文本可能偶尔会更改(总更改,而不是增量).此外,在自定义视图中可能存在多个位于不同不相关位置的文本.
我有一个服务,我想确保不会停止()当不再有任何活动绑定它.
我知道startService()用于实现这一点,但是可以从服务的onBind()方法中调用它吗?
从活动中调用它对我来说似乎是一个黑客,因为服务知道它是否想要在onUnbind()之后闲逛.
活动指示服务的当前状态并提供一些控制,因此bindService()似乎是在此使用的适当方法.
android ×9
android-architecture-components ×1
android-architecture-navigation ×1
okhttp3 ×1
opengl-es ×1
twitter ×1