问题标签 [android-thread]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在之前或之后使用 AsyncTask.execute() 时,帧动画不起作用
为什么AsyncTask
这里会导致与它无关的代码阻塞。例如:
动画在这段代码中运行:
但不是在这个:
或者在这个:
请注意,我在 Fragment 类的 ImageView 的 onClick 中运行此代码。
java - 被破坏的片段内容保留在屏幕上
我有片段通过Retrofit
+进行 API 调用RxJava
。我订阅并处Subscription
置于。当我从 切换到仍在处理 API 调用时,会出现在. 这意味着内容保留在屏幕顶部并且无法控制它。onActivityCreated
onDestroy
FragmentA
FragmentB
FragmentA
FragmentB
FragmentA
FragmentA
片段A.java
片段B.java
我还做了一些日志记录,发现所有FragmentA
包含在内的生命周期方法onDestroyView
都被调用了。
android - 在 android 下,我可以从后台线程执行 Settings.Secure.getInt() 吗?
在android下,我可以运行下面的代码:
来自后台线程(不是来自主 ui 线程)?
android-asynctask - 如何运行异步任务。?仅第一次有效
我已经使用android studio将图像从设备SD卡上传到FTP服务器。当我上传图像时,图像第一次成功上传,第二次上传另一个图像“新AsyncTask()”不调用我做的一些帮助我更改代码的错误是什么..我的代码是。
UploadFTP() 方法
android - UI 冻结在 IntentService 中运行多个线程
所以在我的 android 应用程序中,我有一个意图服务来 ping 设备并查找它们是否在线/离线。
当我启动 IntentService 时,我的 UI 在服务中冻结(调试指向执行 ping 命令的时间)。
收到网络调用的响应后,服务从父活动启动
我的 IntentService 的代码如下:
从我的意图服务中,我使用以下方式将活动设备的数据发送回我的片段:
并使用以下方法在我的片段中提取此信息:
当我使用 IntentService 时,UI 冻结应该不太可能,因为任务是在工作线程上执行的,而不是在主线程中。
无法找出 UI 冻结的根本原因
java - Android NativeActivity:AttachCurrentThread JNIInvokeInterface 不是结构或联合
我正在使用 C 中的 NativeActivity。我的目标是获取对 JNIEnv 的引用,以便进行进一步的 Android 调用。
根据我在 Android 文档和 Stackoverflow 上收集的示例,我不断看到这个
但我不断收到这个错误......
java - 在线程的构造函数中调用 Looper.prepare() 会导致 RunTimeException
我有一个class
扩展Thread
如下 -
现在,我想在looper
这个线程上附加一个。根据我对Looper
只有主线程的理解,looper
默认情况下会附加到它。
我尝试像这样调用Looper.prepare()
并Looper.loop()
形成ThreadTest
类的构造函数-
但是,我java.lang.RuntimeException: Only one Looper may be created per thread
在Looper.prepare();
.
虽然,如果我附上looper
in Run()
,我不会遇到任何问题。
我究竟做错了什么?
android - 在 GL 渲染线程上收到异常:android
我正在使用 CAMERA2 API,同时开发一个没有任何错误的应用程序,该应用程序将运行得很好。但是在录制了一些片段后,它会显示上述错误。
这是我的做法,
1.使用类打开相机cameraManager
,然后将视频预览设置为纹理字段
- 在我们开始录制视频后,它会根据给定的时间中断,并立即重新开始录制,它会不断创建视频块,直到用户停止录制
没有任何问题,它会创建许多(大约 200-300 个)相机会话。但突然它发生在错误之下。我已经给了一些时间来设置相机会话并使用Timer
类和TimerSchdule
类发布这些会话。
我已经阅读了这个、 这里和这里,以提取到底发生了什么。思想需要一些进一步的帮助。
我想知道的是
这个错误说明了什么?
一般来说,为什么这些错误发生在
编辑 :
错误--->>>>
android - 如何在包含 OpenGL 上下文和 GL 线程的同时使用 GLSurfaceView 正确旋转 Android 设备?
我有一个简单的 Android 应用程序,它使用我们的 OpenGL 渲染 SDK 将数据渲染到 Android GLSurfaceView
。由于我们提供 SDK 供其他人使用,我们需要支持 GLSurfaceViews 的所有用例。目前,我们需要能够旋转设备,同时重新创建所有 Android 视图并保持 OpenGL 上下文处于活动状态。这源于客户在横向和横向模式下需要不同的布局。
正常的处理方式是:
1.添加android:configChanges="orientation|screenSize"
到您的活动中AndroidManifest.xml
,您会没事的。
这在这种情况下不起作用,因为这不会重新创建旋转视图。因此,通过这样做,我们不能在横向和横向模式下拥有不同的布局。
2.调用GLSurfaceView.onPause()
和GLSurfaceView.onResume()
从Activity
。
虽然这被认为是一种好的做法,但在这个用例中还不够,因为这样做时 OpenGL 上下文会被破坏。请注意,我们仍在这样做,它只是不能解决我们的问题。
3. 在旋转时使用EGLContextFactory
来保留 OpenGL 上下文。
如本答案中所述,这是可能且有用的。感觉就像一个黑客,但它绝对有效。EGLContext
这个想法很简单,当你没有一个时创建一个,并在你拥有的时候重用它。
我们在使用这个 hack 时面临的主要问题是渲染线程在GLSurfaceView
被分离并重新附加到视图层次结构时被破坏并重新创建。通过查看GLSurfaceView 实现,这似乎是设计使然。
在我们的 SDK 中,我们有一些线程本地存储连接到线程,所以突然获得一个新的渲染线程并不是很理想。当渲染线程发生变化时,我们可能会改变一些状态,但我们想研究是否有更好的方法来做到这一点。
所以我的问题是:
A. 是否使用EGLContextFactory
“正确”的方式来手动保存旋转时的 OpenGL 上下文?
B. 有什么方法可以在旋转时不破坏和重新创建渲染线程(不修改源)?
C. 在保持 OpenGL 上下文和渲染线程的同时,有没有更好/更简单的替代方案来实现视图销毁/重新创建的旋转?
额外信息:
- 我们总是打电话
setPreserveEGLContextOnPause(true);
。 - 渲染本身没有问题,只是描述的相关问题有问题。
java - 如何计算智能手机使用的有效时间(无锁时间)
我需要计算手机的实际使用时间,即当用户按下按钮时,我需要启动一些东西来计算屏幕打开的时间,但是当用户锁定手机时,计数器必须停止并且必须在用户重新启动时重新启动解锁智能手机。通过这种方式,可以看到实际智能手机使用时间的小时、分钟和秒计数器。
我该如何处理这个逻辑?我可以使用什么样的组件?服务、线程和广播接收器?我怎样才能将它们互连?