【问题标题】:App is running after closing关闭后应用程序正在运行
【发布时间】:2016-01-31 18:30:42
【问题描述】:

每当我尝试关闭前台服务时,即使没有打开任何活动,我的应用也会继续运行。我进行了一些分配和函数跟踪测试,并注意到,但是,我的应用程序仍然处于打开状态,并且使用了几 MB 的内存,在关闭服务后我的任何方法都没有被调用。只有Java和Android的东西。哦,看起来我的应用程序在此期间也泄漏了内存。根据我的应用程序的 Java 堆,实例化了数千个 FinalizerReference。这会导致这么大的问题吗?或者为什么会发生这种情况?

看起来是这样的:

【问题讨论】:

    标签: java android


    【解决方案1】:

    它的默认 android 属性,即使您关闭了您的应用程序,该应用程序仍会继续在后台运行,很少有服务等功能在后台运行。要么你强行存在我不建议的应用,要么让安卓在需要时自动关闭它

    【讨论】:

    • 图像视图,位图怎么样..你释放它们
    • 既然你停止了你的地图,我建议你回收位图,释放分配给位图、图像视图等的内存
    • 在终止时使用 Exit() ,它会杀死你的应用程序,但释放内存可能需要一些时间,如果它的 1mb 和所有这无关紧要
    • 因为Views在内存中,过段时间会自动清空
    • 你不停止服务吗?还是您需要该服务在后台运行
    【解决方案2】:

    Android 应用及其组件具有独特的生命周期。见这里:http://developer.android.com/guide/components/processes-and-threads.html

    【讨论】:

      【解决方案3】:

      这就是 android 的工作方式,您拥有的每个活动和服务仅在一个称为 UI 线程的线程内执行,该线程本身和您创建的其他线程在单个进程中运行。

      在系统有足够的内存存储新内容之前,Android 不会关闭此进程,因此如果您的用户想要再次运行您的程序,它会尽快启动。但是您可以使用 exit() 函数终止整个过程。

      实际上,活动或服务不是程序,而是在程序进程内的 UI 线程内运行的一段代码,现在该进程是您的程序,即使通过广播接收器调用也可以启动!

      【讨论】:

        【解决方案4】:

        当您想完全关闭应用程序时调用 finish() 应该会终止应用程序并释放它的资源。

        【讨论】:

          猜你喜欢
          • 2013-02-03
          • 2020-01-03
          • 2011-04-02
          • 2021-05-17
          • 2012-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多