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)

アクティビティが別のアクティビティによって完全に隠されている場合、そのアクティビティは停止されます。それでもすべての状態とメンバー情報が保持されますが、ユーザーには表示されなくなるため、ウィンドウは非表示になり、他の場所でメモリが必要になるとシステムによって強制終了されることがよくあります。

これは、 onDestroyが呼び出されない限り、またはonPauseまたはonStopが呼び出された後にメモリが必要にならない限り、クラスインスタンス(strおよびnumber)が「有効」で使用可能であることを意味しますか?

4

1 に答える 1

0

呼び出し元アクティビティでメソッドを呼び出した場合、呼び出し元アクティビティfinish()が終了してから、前のアクティビティのインスタンスは有効になりません。すべてのインスタンスはガベージコレクションされます。

ただし、呼び出し元のアクティビティがを呼び出さないfinish()場合、アクティビティは表示されなくなりますが、オペレーティングシステムによって維持されているアクティビティスタックに存在します。呼び出し元のアクティビティ(つまり、前のアクティビティ)は、デバイスのメモリが不足している場合に終了する場合があります。たとえば、アクティビティがカメラ(豊富なリソースを必要とする)を呼び出す場合、前のアクティビティが破棄される可能性があります。

したがって、あなたの場合、StartActivity現在の目に見えるアクティビティでなくても、変数は生きています。

于 2012-07-11T13:56:55.937 に答える