2

我有以下活动:

public class StartActivity extends Activity
{
    String str = "somestring";
    int number = "1";

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Code here
    }
}

我在 Android 文档( http://developer.android.com/reference/android/app/Activity.htm l)上阅读了以下内容

如果一个活动被另一个活动完全遮挡,它就会停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的窗口是隐藏的,并且当其他地方需要内存时,它通常会被系统杀死。

这是否意味着我的类实例(strnumber)是“活动的”并且可用,除非调用onDestroy或调用onPauseonStop后需要内存?

4

1 回答 1

0

如果在您的调用者活动中,您已经调用finish()了方法,那么由于您完成了调用者活动,因此之前的活动实例将不会处于活动状态。所有实例都将被垃圾收集。

但是,如果您的调用者活动没有调用finish(),那么该活动将不再可见,但它将出现在操作系统维护的活动堆栈上。调用者活动(即前一个活动)可能会在设备内存不足的情况下完成,例如:如果活动调用相机(需要丰富的资源),在这种情况下,前一个活动可能会被破坏。

因此,在您的情况下,即使StartActivity不是当前可见的活动,变量也将是活动的。

于 2012-07-11T13:56:55.937 回答