我想知道一些基本的东西
我正在开发一个Android应用程序,因此它导致我的内存管理问题.最近观看了与谷歌内存管理相关的视频我发现在活动中使用静态变量会导致内存泄漏,即使在活动的方向更改中也会因为它保留对活动中其他对象的引用,视频中的人说使用静态变量静态方法的帮助将解决问题,我想知道静态方法将如何解决问题?
我想知道在我的应用程序中使用静态变量的最佳方法,例如我有一个全局类,其中我存储了一些静态变量,因为它的名称表示这些值将由不同的活动进行评估和修改.例如,我有一个静态变量WIDTH并且当前正在更新它
Global.WIDTH = 12
或者int width = Global.WIDTH
从不同的活动中得到它,这是一个正确的方法,还是我必须使用静态方法来获得宽度int width = Global.getWidth();,然后两者之间有什么区别,最好的方法是什么,
在处理静态变量时我们必须记住的其他重要事项是什么?
谢谢大家,很抱歉长篇大论......
我发现我们可以使用newKeySet();或 withkeySet(default value)从ConcurrentHashMap. 当写操作超过读操作时,这是创建线程安全集的最佳方法吗?
我读到 CopyOnWriteArraySet当阅读比写作更多时,似乎更好。
欢迎所有可以帮助我们了解更多信息的答案。
我的视图模型中有两个状态流
private val _peopleList = MutableStateFlow(emptyList<People>())
val peopleList: StateFlow<List<People>> = _peopleList
val _peopleListLoader = MutableStateFlow(false)
val peopleListLoader: StateFlow<Boolean> = _peopleListLoader
Run Code Online (Sandbox Code Playgroud)
peopleList 用于显示列表,peopleListLoader 用于在 UI 中显示进度指示器。所有这些都按预期在应用程序中正常工作。但是在我的单元测试中,当我检查peopleListLoader使用peopleListLoader.toList(values)功能时,它没有我在人员列表加载期间分配给它的值。
以下是我的实现
人员列表视图模型
@HiltViewModel
class PeopleListViewModel @Inject constructor(
val repository: PeopleRepository,
@MainDispatcher private val dispatcher: CoroutineDispatcher
) : ViewModel() {
private val _peopleList = MutableStateFlow(emptyList<People>())
val peopleList: StateFlow<List<People>> = _peopleList
val _peopleListLoader = MutableStateFlow(false)
val peopleListLoader: StateFlow<Boolean> = _peopleListLoader
private val _peopleListErrorMessage = MutableStateFlow("")
var peopleListErrorMessage: StateFlow<String> = _peopleListErrorMessage
fun loadPeoplesList() { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用andengine gles2锚点中心开发一个动态壁纸,有一些物理.但是当我添加一个物理对象时,它向上移动.而不是由于重力向下移动
我正在制作的错误请帮助我理清问题
这是我的代码
FixtureDef FIXTURE_DEF = PhysicsFactory.createFixtureDef(1, 0.5f,
0.5f);
mPhysicsWorld = new PhysicsWorld(new Vector2(0,
SensorManager.GRAVITY_EARTH), false);
final AnimatedSprite animatedSprite;
animatedSprite = new AnimatedSprite(500, 250,
this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager());
body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, animatedSprite,
BodyType.DynamicBody, FIXTURE_DEF);
scene.attachChild(animatedSprite);
animatedSprite.animate(200);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(
animatedSprite, body, true, true));
Run Code Online (Sandbox Code Playgroud) 我在片段中有一个 Exoplayer 视图,当我从活动中对片段容器视图进行动画处理时,exo 播放器将变黑。
我曾经setKeepContentOnPlayerReset(true);保留最后一帧,效果很好。
但是,当我在视频结束后在片段容器视图(即帧布局)上调用动画(滑动动画)时,Exo 播放器将显示黑屏。(即使片段退出过渡也会在 Exo 播放器上产生相同的问题,这次我没有替换片段,只是对容器视图进行动画处理,问题仍然存在)
我没有任何与此问题相关的线索,这将是如果有人可以分享一些与此相关的想法,那将非常有帮助。欢迎与此相关的所有建议和答案。谢谢。
android ×3
java ×2
andengine ×1
exoplayer ×1
exoplayer2.x ×1
game-physics ×1
hashset ×1
kotlin-flow ×1
performance ×1
static ×1
unit-testing ×1