Android – Firebase – 我是否需要删除每个单独的侦听器?

Android – Firebase – 我是否需要删除每个单独的侦听器?,第1张

概述我做了一些合理的研究,找不到我需要的答案. 我所知道的:当我将ValueEventListener附加到数据库引用时,我知道我需要稍后将其删除(现在发现一些大量的内存泄漏. 我不知道的是:我还需要分离所有其他听众吗? (这包括Firebase数据库,存储和身份验证,我正在使用的三个API) 例: UploadTask uploadTask = ref.putFile(uploadFile);u 我做了一些合理的研究,找不到我需要的答案.

我所知道的:当我将ValueEventListener附加到数据库引用时,我知道我需要稍后将其删除(现在发现一些大量的内存泄漏.

我不知道的是:我还需要分离所有其他听众吗? (这包括Firebase数据库,存储和身份验证,我正在使用的三个API)

例:

UploadTask uploadTask = ref.putfile(uploadfile);uploadTask.addOnFailureListener(new OnFailureListener() {    //@OverrIDe code here}).addOnSuccessListener(new OnSuccessListener<UploadTask.TakeSnapshot>() {    //@OverrIDe code here}).addOnProgressListner(new OnProgressListner<UploadTask.TakeSnapshot>() {    //@OverrIDe code here};

我认为这足以向你展示我的意思.这就是我的实际代码目前的结构.

问题:

>我是否需要删除所有这些侦听器以防万一
在此之前被终止(系统决定,电话死亡,等等)
回调发生了吗?
>我可以以某种方式将它们捆绑起来并立即将它们全部三个终止
因为我在我的代码中有30个这样的并且真的感觉不到
喜欢重组所有这些以分配所有这些听众
变量JUST所以我可以将它们传递给
“removeBlahBlahBlahListener(ListenerVariable)”一遍又一遍.
>稍微偏离主题,但是,我懒得移动我的所有代码
onCreate to onStart …对我来说是不好的做法,删除所有这些
听众,完成任务,调用完成()(或其他任何东西
杀掉一项活动,虽然我猜这不保证)并且只是从头开始重新创建活动?
这是一个简单的小应用程序,因此重新创建活动的开销
没什么大不了的.只是好奇什么是“正确的”.

我想这只是计划不周和缺乏知识的结果(我只是为了娱乐而不是为了工作而不幸)所以如果我必须采取艰难的路线,我想这是一次学习经历,对吧?

解决方法 活动停止时自动取消注册侦听器是androID及其派生类(StorageTask)中“Task”类的一个功能.

这意味着您可以执行以下 *** 作:

UploadTask uploadTask = ref.putfile(uploadfile);uploadTask.addOnFailureListener(thisActivity,new OnFailureListener() {//@OverrIDe code here}).addOnSuccessListener(thisActivity,new OnSuccessListener<UploadTask.TaskSnapshot>() {//@OverrIDe code here}).addOnProgressListner(thisActivity,new OnProgressListner<UploadTask.TaskSnapshot>() {//@OverrIDe code here};

您还可以使用从实时数据库返回的Task对象(如setValue)执行此 *** 作,如下所示:

databaseReference.setValue("newValue").addOnSuccessListener(thisActivity,...)

所以直接回答你的问题:

>使用活动范围版本在活动停止时自动取消注册侦听器.请注意,对于存储,您可以在活动开始时使用StorageReference.getActiveUploadTasks和StorageReference.getActiveDownloadTasks查询正在运行的 *** 作并重新订阅.>如果使用作用域侦听器,则不需要手动取消订阅.我不知道批量取消订阅非基于任务的侦听器的方法.>嗯,我不确定你怎么能保证 *** 作系统总是会杀死你的任务而不是再次停止/启动它 – 以及你的完成代码将如何保证运行.我建议你将代码移到onStart

总结

以上是内存溢出为你收集整理的Android – Firebase – 我是否需要删除每个单独的侦听器?全部内容,希望文章能够帮你解决Android – Firebase – 我是否需要删除每个单独的侦听器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1135952.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存