- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道是否需要 SpiceManager 的 shouldStop() 方法。我的想法是它应该从 Activity/fragment 中解除绑定(bind)可能的监听器,但是如果 Activity 无论如何都会被杀死,是吗事情?垃圾收集器仍将清理 Activity/fragment ,后台服务仍将单独完成。或者我在这里错了吗?当您忘记后台线程中的某些引用时,Android 真的会泄漏吗?
source code 中有一些(误导性的)评论: 对于 shouldStop()它说它将异步解除绑定(bind),对于shouldStopandJoin()同步地。但是 shouldStop 调用 shouldStopAndJoin,而 shouldStopAndJoin 评论说它主要是一种测试方法。那么我们真的需要在 Activity 的 onStop() 回调中调用 shouldStop 吗?
我问这个是因为我想在应用程序上下文中有一个 spicemanager 实例,它没有处理清理或停止事情的特殊方式。所以我想确定没有泄漏或类似的事情。需要明确的是,不是真正在应用程序上下文中,而是从应用程序上下文启动并管理所有后台内容(如 robospice 请求或位置内容)的自定义“ Controller ”。我正在尝试模拟 MVC 模式,其中所有逻辑都真正独立于仅具有用于更改 UI 的 @Subscribe 方法的 Activity 和 fragment 。
编辑:实际上,如果我从应用程序上下文中调用它,那么它与 Activity 或 Fragment 不同。即使 Activity 或 Fragments 确实泄漏了,Application 也不应该,对吧?
感谢任何评论。
最佳答案
当您忘记后台线程中的某些引用时,Android 真的会泄漏吗?
是的,确实如此。这恰恰是制造泄漏的一种非常好的方法。
那么我们真的需要在 Activity 的 onStop() 回调中调用 shouldStop 吗?
是的,你这样做是为了 1) 防止泄漏,2) 防止你的回调在启动上下文结束后被触发,这会导致崩溃。但你是对的,javadocs 可能会导致混淆。调用 ShouldStopAndJoin 进行测试(将其视为私有(private) + 测试)并且 shouldStop 是公开的。
即使 Activity 或 Fragments 确实泄漏了,Application 也不应该,对吧?
没错。当应用程序终止时,这意味着整个应用程序进程终止,并且任何东西都不会泄漏到 Java 中的 VM 之外。因此,对于应用程序类,没有办法正确调用 shouldStop,也不需要。
关于android-lifecycle - RoboSpice shouldStop() 真的需要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146205/
Flutter 项目无法在带有 AndroidX 的 Android Studio 中运行兼容性并在运行/控制台窗口中返回以下错误: FAILURE: Build failed with an exc
2019年5月7日,androidx.Life Cycle:*:2.2.0-alpha01发布,宣布:。在文档中提到,我可以获得LifecycleScope:。但是我好像一个也找不到。我目前的依赖关系
我正在尝试使用 Android 生命周期,但我正在添加生命周期编译器依赖项。 这是模块 build.gradle, apply plugin: 'com.android.application' ap
有什么区别 android.arch.lifecycle vs androidx.lifecycle 代码: val loading: LiveData get() = webDataSour
在真实设备上(Nexus 5、Leeco、小米等).observe 方法有效,但是当我在 Firebase 测试实验室开始测试时,应用程序在很多设备上启动时崩溃并出现异常(虚拟 Nexus 10 和
我正在尝试观察 的结果查看收集和上游流停止 . 但是viewModel.testFlow应用程序在后台时仍在收集。 为什么我无法观察到收集已停止?我观察到什么不对吗? View 模型: val tes
我们的 Activity/Fragment 中已经有一个生命周期,那么为什么我们要使用生命周期感知组件并请指导我它的主要目的。如果我们使用生命周期感知,那么为什么我们使用我们已经知道的生命周期 最佳答
我在尝试实现 viewpager2 时收到此错误 相关代码如下: public class ViewPagerAdapter extends FragmentPagerAdapter { privat
目前,我们正在项目中使用LiveData、ViewModel 和Room。 我们正在使用 Java 8。 我们在build.gradle中使用以下内容 // ViewModel and LiveDat
2019 年 5 月 7 日 androidx.lifecycle:*:2.2.0-alpha01 发布公告: This release adds new features that adds sup
正在制作有关 LiveData 和 ViewModel 的教程。在 build.gradle 中我添加了: // ViewModel and LiveData implementation "andr
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我在我的 Android 应用程序中重载了应用程序类,我正在使用 ACRA报告系统。我的应用看起来像 ( real source code here) : public class MyApplica
我的公司有一个最初为 Windows XP 开发的桌面应用程序。最初的程序员已经被解雇了(我可能会因极端偏见而被解雇)。我已经多次修复了该应用程序,但总体上尽量避免它,它是一团糟,修复它的唯一真正方法
我是架构组件的新手,我创建了一个 ViewModel 类并根据架构组件实现了 LifecycleObserver,在 ViewModel 类中我有一个可运行接口(interface)的重写 run()
在 mvvmcross v3 ViewModel public class TimerViewModel : MvxViewModel { System.Timers.Timer timer;
那么,我们来谈谈 React 组件的生命周期。 我的模型文件名为 Firebase.js ,里面有我所有的方法都可以触发我的数据。 Firebase.js export const getUserSh
我想知道 Storm Spout 上的各种方法何时被调用。 我看过ISpout javadoc ,这给了我以下思维模型: "instantiated" -- open(...) -----> "act
我有一个问题,我认为它与屏幕渲染及其生命周期有关。基本上我有两个屏幕(菜单和游戏)。在 GameScreen 渲染方法中,我调用 World.update,然后调用我的 Render。在(GameSc
我在使用 reactjs 时遇到了很多问题,主要是因为我不确定组件生命周期以及 确切地 setState 之类的东西在什么时候做事。 我知道有一个标题为“组件生命周期”的页面,但我需要一个更详细的可视
我是一名优秀的程序员,十分优秀!