Firebase Ionic2+;AngularFire2离线=内存泄漏

Firebase Ionic2+;AngularFire2离线=内存泄漏,firebase,memory-leaks,firebase-realtime-database,ionic2,angularfire2,Firebase,Memory Leaks,Firebase Realtime Database,Ionic2,Angularfire2,更新:我在没有离线包装的情况下再次测试了它,它似乎工作正常(我以前肯定错过了一些东西),因此问题似乎是由AngularFire2离线()引起的。有没有人经历过类似的问题 我正在Ionic2中使用Firebase作为数据库构建一个Android应用程序,看起来我有一个内存泄漏,到目前为止我还无法修复。要加载firebase数据,我使用AngularFire2和AngularFire2离线 为了测试这个问题,我简化了数据结构和应用程序功能。对于数据,我有一个用户列表,每个用户都有一个任务列表(任务是

更新:我在没有离线包装的情况下再次测试了它,它似乎工作正常(我以前肯定错过了一些东西),因此问题似乎是由AngularFire2离线()引起的。有没有人经历过类似的问题

我正在Ionic2中使用Firebase作为数据库构建一个Android应用程序,看起来我有一个内存泄漏,到目前为止我还无法修复。要加载firebase数据,我使用AngularFire2和AngularFire2离线

为了测试这个问题,我简化了数据结构和应用程序功能。对于数据,我有一个用户列表,每个用户都有一个任务列表(任务是用户的子任务)。在应用程序中,我有两个页面-第一个页面显示用户列表,第二个页面显示选定用户的任务。每个任务都有一个复选框-一旦选中,任务的
isDone
标志将更新,并且不再显示任务(我使用搜索管道仅显示
isDone==false
的任务)

问题是,每次任务更新时,内存使用量都会显著增加(约1MB)。下面的屏幕截图显示了3个快照:

  • 加载应用程序并显示用户列表后(33.7MB)
  • 加载近40个任务的列表后(35.9MB)
  • 更新15个任务后(46.2MB)
  • 内存使用率永远不会下降-每次更新(即使我去不同的用户)都会增加内存使用率。经过几分钟的测试,它将超过100MB甚至更多。这会导致Android设备上的应用程序崩溃

    其背后的代码是:

    • 在html页面中(循环开始):

    • 在控制器-更新任务中:

      this.data.updateTask(this.userKey, task.$key, task);
      
    • 数据提供程序中的两种方法:

      getTasks(userKey: string): AfoListObservable<Task[]> {
          return this.db.list("/users/" + userKey + "/tasks");
      }
      
      updateItem(userKey: string, taskKey: string, task: Task): firebase.Promise<void> {
          return this.db.object("/users/" + userKey + "/tasks/" + taskKey).update(task);
      }
      
      gettask(userKey:string):可观察{
      返回此.db.list(“/users/”+userKey+“/tasks”);
      }
      updateItem(userKey:string,taskKey:string,task:task):firebase.Promise{
      返回此.db.object(“/users/”+userKey+“/tasks/”+taskKey).update(任务);
      }
      

    html页面中有方法调用吗?有,但我已经删除了所有方法调用,问题仍然存在。当我在没有离线包装的情况下使用AngularFire2时,它消失了。没有离线包装意味着。。?请解释一下,我面临着同样的问题!脱机包装器是npm库angularfire2 Offlinear是否有来自html页面的方法调用?有,但我已经删除了所有方法,问题仍然存在。当我在没有离线包装的情况下使用AngularFire2时,它消失了。没有离线包装意味着。。?请解释一下,我面临着同样的问题!脱机包装器是npm库angularfire2脱机
    this.data.updateTask(this.userKey, task.$key, task);
    
    getTasks(userKey: string): AfoListObservable<Task[]> {
        return this.db.list("/users/" + userKey + "/tasks");
    }
    
    updateItem(userKey: string, taskKey: string, task: Task): firebase.Promise<void> {
        return this.db.object("/users/" + userKey + "/tasks/" + taskKey).update(task);
    }