onDestroy()或finish()是否真的会终止活动



事实上,我知道我在问安卓的简单而基本的概念。但我对这些finish()onDestroy()方法有点困惑。这是否会终止活动并释放与这些活动相关的资源?

我尝试了一个只包含一个活动的简单应用程序。我认为这个概念就像当应用程序运行时,活动就会开始。当我们点击后退按钮时,它就会结束。我在每个生命周期中都给出了一些关于内存使用的方法。当我点击后退按钮时,它执行了onPause()onStop()onDestroy()。我以为这次活动结束了。但当我再次重新启动应用程序时,它比上次占用了更多的内存。每当我从eclipse运行应用程序或从主屏幕重新启动应用程序时,都会发生这种情况。

为什么会这样?我如何才能真正销毁应用程序/活动以释放内存?


我正在包含我的代码。我只是在课堂上发了一条祝酒词。然后内存使用量也在增加。

每次运行应用程序时,分配的大小都在增加,如:330274434423843474552

 public class myActivity extends Activity
   {
         @Override
         public void onCreate(Bundle savedInstanceState)
         {
             super.onCreate(savedInstanceState);     
        Toast.makeText(getBaseContext()," allocated size  = " + Debug.getNativeHeapAllocatedSize(), 1).show();      
         }
   }

清单:

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".myActivity "  
                  android:label="@string/app_name"  >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity> 
 </application>

为什么记忆力每次都在增加?

finish()终止活动并释放内存。。。除非你存储了一些泄露的引用。。。例如在onRetainNonConfigurationInstance()等方法上

当你按下后退按钮时,被称为finish()方法,它会调用onPause、onStop和onDestroy。

默认行为是后退按钮将导致活动退出并被销毁。不过,在onDestroy或onPause中显示吐司不是一个好主意。它会以一种你不希望发生的方式改变你的活动的生命周期。使用日志记录,这样您就可以看到实际发生了什么。顺便说一句,finish()是您从代码中显式调用的东西,onDestroy()是一个生命周期事件/方法,它是在以任何方式完成/取消活动时调用的。

Finish()将实际完成您的活动,如果没有引用,GC将恢复资源。onDestory()实际上是系统在破坏您的活动时将调用的一个方法,您应该实现这个函数。你不需要担心破坏你的应用程序,安卓会为你做这件事。

最新更新