关闭

时间:2016-01-31 18:30:42

标签: java android

无论何时我尝试关闭我的前台服务,即使我的所有活动都没有打开,我的应用程序也会继续运行。我做了一些分配和函数跟踪测试,并注意到,然而,我的应用程序仍然打开并使用几MB内存,在关闭服务后我的方法都没有被调用。只有Java和Android的东西。哦,看起来我的应用程序也泄漏了内存。根据我的应用程序的Java堆,有数千个FinalizerReferences被实例化。这会引起如此大的问题,或者为什么会发生这种情况?

这就是它的样子:

enter image description here

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这就是android如何工作,你拥有的每个活动和服务,只在一个名为UI线程的线程中执行,该线程本身和你创建的其他线程在一个进程中运行。

Android没有关闭此过程,直到systme有足够的内存用于新内容,所以如果用户想要再次运行程序,它会尽快启动。但您可以使用 exit()函数终止整个过程。

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

答案 3 :(得分:0)

当你想要完全关闭应用程序时调用finish()应该杀死应用程序并释放它的资源。