我看到,如果在活动中实例化Dagger 2组件,那么稍后在onDestroy()
方法中将其置空,如图所示。
public class MyActivity {
private MyActivityComponent component;
//...
public void onCreate() {
component = Dagger_MyActivityComponent.builder()
.myApplicationComponent(App.getComponent())
.build()
.inject(this);
//...
}
public void onDestroy() {
component = null;
}
}
如果我不null
该实例会发生什么,会发生什么?
旁注:在评论中,我发现了一个有用的提示,为什么人们会将其设置为null
,这很有说服力:“我认为这没有必要,但它定义的范围非常清楚”。
如果我不将该实例设为null[…],会发生什么?
没什么。在onDestroy
被调用后,活动对象将在某个时候被垃圾收集。如果重新创建活动,它将是一个新对象。您的匕首组件也将随着您的活动一起被垃圾收集。我通常不null
我的组件在onDestroy
,因为我认为这是不必要的。
如果您保持对活动的静态引用,或者存在其他类型的内存和活动泄漏,则这将不成立。但是如果您有这些,那么如果您null
您的组件,也不会有太大的区别。
问题内容: 线程启动后,如果该线程的引用设置为,那么该线程将如何处理?会停止吗?它有资格获得GC吗? 像这样: 问题答案: 实时线程将继续运行,即使其引用设置为null。 就像任何其他对象一样,当没有任何引用时,它就有资格使用GC。棘手的一点是,即使您的程序未保留一个 正在运行的线程 在ThreadGroup中的引用,因此 也永远不会 对 正在运行的线程进行GC。
问题内容: 我有以下映射 我如何配置我的Mapper或Mappings,以便当childId为null时,将目标Entity.child设置为null而不是Entity.child.id? 问题答案: 对于我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。 首先将接口更改为抽象类,然后添加
我在代码中使用了嵌套的Coroutine块。当我试图将Deferredtype的结果转换为变量时,得到了一个空值。因此,它导致了一个转换问题,即kotlin.TypeCastException:null不能转换为getNearbyHealthInstitutions()方法返回行中的非空类型kotlin.Collections.ArrayList。我相信,我在某个时候做了正确的实现,但是我错过了什
问题内容: 我希望将值设置为如果我提交的表单中的文本框未放入任何内容。我怎样才能做到这一点?我尝试插入,但这只是将单词添加到字段中。 我不确定应该为此提供什么代码,我只是在编写UPDATE查询。 问题答案: 不要在更新语句中加引号。这应该工作:
我想允许用户选择日历上的开始和结束日期。我使用的是反应日期。 我希望它像下面这样工作 初始开始日期和结束日期将为空。当用户选择开始日期(如10月10日)时,第一次单击时,enddate也设置为startdate(10月10日),并且开始日期(10月10日)之前的日期和从开始日期算起6周后的日期将被禁用,现在当用户选择enddate(如10月13日)时,enddate设置为13th oct,并且在选
我是线程新手,目前正在学习线程同步章节。关于线程锁定中的一个场景,我有一个问题 以下是我所知道的: 1:当我在实例方法中放置实例锁时(即) 这里将发生的情况是,如果有一个类X的对象A被多个线程共享,并且一些线程t1正在执行f1的块,那么直到t1退出f1块,所有试图进入函数f3的其他线程,f1都将被阻止。f2和f4的情况也是如此。 现在,在静态锁的情况下,如果一个类有多个静态方法,并且我们希望这些方