当前位置: 首页 > 知识库问答 >
问题:

RxKotlin-调用dispose时终止进程

都昊乾
2023-03-14

我正在尝试通过rxkotlin上传图像,我的问题是当我在应用程序中关闭屏幕时,上载过程会终止,因为我正在将订阅添加到我的处置中,所以当我的屏幕关闭或销毁时,我将进行处置。因为这个dispose,我的工作被终止了,因为无论如何我都需要处理其他的东西,这会导致内存泄漏

fun uploadImage(imagePath : String){
   uploadToServer(imagePath)
        .subscribe()
        .addTo(disposal)   
}

override onCleared(){
   disposal.dispose()
}

因此,我这样做,有没有其他方法来继续这项工作,即使在屏幕被破坏或清除后没有内存泄漏?

共有1个答案

蒋昊天
2023-03-14

ViewModel独立于活动/片段生命周期或只是它们的配置更改类,因为onCleared仅在活动完成后调用。所以不要在onCleared上处理Rx变量。最好在onDestroy上处理它们

override onDestory(){
super.onDestroy()
disposal.dispose()
}
 类似资料:
  • 当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。

  • 问题内容: 我想尽可能快地重复执行子过程。但是,有时该过程将花费很长时间,因此我想取消它。我使用signal.signal(…),如下所示: 但有时这段代码将尝试阻止下一轮执行。停止test / home / lu / workspace / 152 / treefit / test2超时/ bin / sh:/ home / lu / workspace / 153 / squib_driver

  • 我正在使用2.2.3 我使用创建了一个非常简单的项目。 当我运行项目时,在选项卡中出现以下错误: 那么该怎么做才能防止这种过程杀熟呢?

  • 主要内容:执行步骤到目前为止,我们知道每当执行一个程序时,就会创建一个进程,并在执行完成后终止。 如果我们需要在程序中创建一个进程,并且可能希望为其安排不同的任务。 这可以实现吗? 是的,显然是通过进程创建来实现。 当然,工作完成后进程会自动终止,或者根据需要终止。 过程创建是通过系统调用实现的。 新创建的进程称为子进程,启动该进程的进程(或执行开始时的进程)称为父进程。 在系统调用之后,现在有两个进程 - 父进程

  • 我有一个单线程进程,它不会在终止条件下死亡。处理信号掩码未显示SIGTERM被阻塞。我以root身份执行“kill”。我可以使用SIGKILL终止进程,但这是更大系统的一部分,我希望SIGTERM能够工作。 注意Sig*属性。SigCgt、SigIgn和SigBlk表示SIGTERM既没有被捕获、忽略或阻塞(第15位未设置-将最低有效位计算为#1)。由于SIGTERM的默认配置是终止进程,我希望它

  • 在linux中,当主线程终止时,整个过程都会退出,不管它是以何种方式终止的,都是通过函数out()或从main返回。如果主线程从main()返回,它将返回到称为crt. o或类似的“C运行时”。在crt. o中,它的c代码是这样的:退出(main(argc, argv));退出()将由主线程 最终调用,结果,所有线程都终止。 我的想法正确吗? 如果在crt中。o exit()被诸如void thr