アクティビティのライフサイクル、回復の状態を保存する(古典)

オリジナルリンク: http://www.cnblogs.com/james1207/p/3279928.html

まず、全体的なフレームワーク

二、main.xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

	<Button
        android:id="@+id/startPartActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="startPartActivity" >
    </Button>
    
	<Button
        android:id="@+id/startDialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="startDialog" >
    </Button>
    
	<EditText
        android:id="@+id/et_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         />

</LinearLayout>


レイアウトアクティビティ懸濁液である三、part_activity.xml、。

 

 

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView 
    android:id="@+id/iv_logo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:src="@drawable/gesture1" 
    /> 
    <TextView  android:layout_width="wrap_content" android:text="Hello Jltxgcy" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/iv_logo" 
    android:textColor="@android:color/black" 
    /> 
</RelativeLayout> 


テーマのプロパティ:そのアンドロイドを設定するには、四、AndroidManifest.xmlに、PartActivityサスペンション。

 

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jltxgcy.lifecycledemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="LifecycleDemo" >
        <activity
            android:name=".MainActivity"
            android:label="MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PartActivity"
            android:theme="@android:style/Theme.Dialog" >
        </activity>
    </application>

</manifest>

 


五、MainActivity.java

 

package com.jltxgcy.lifecycledemo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {
	public static final String TAG="jltxgcy";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.d(TAG, "MainActivity onCreate");
        
        findViewById(R.id.startPartActivity).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, PartActivity.class);
				startActivity(intent);
				
			}
		});
        
        findViewById(R.id.startDialog).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				final CharSequence[] items = {"Red", "Green", "Blue"};

				//调用dialog
				AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
				builder.setTitle("Pick a color");
				builder.setItems(items, new DialogInterface.OnClickListener() {
				    public void onClick(DialogInterface dialog, int item) {
				        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
				    }
				});
				AlertDialog alert = builder.create();
				alert.show()  ;
				
			}
		});
    }
    
    @Override
   	protected void onStart() {
   		// TODO Auto-generated method stub
   		Log.d(TAG, "MainActivity onStart");
   		super.onStart();
   	}

   	@Override
   	protected void onResume() {
   		Log.d(TAG, "MainActivity onResume");
   		super.onResume();
   	}

   	@Override
   	protected void onPause() {
   		Log.d(TAG, "MainActivity onPause");
   		super.onPause();
   	}

   	@Override
   	protected void onStop() {
   		Log.d(TAG, "MainActivity onStop");
   		super.onStop();
   	}

   	@Override
   	protected void onDestroy() {
   		Log.d(TAG, "MainActivity onDestroy");
   		super.onDestroy();
   	}

   	@Override
   	protected void onRestart() {
   		Log.d(TAG, "MainActivity onRestart");
   		super.onRestart();
   	}
   	
   	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		Log.d("gcyjltx", "onSaveInstanceState");
	}

}

六、PartActivity.javaサスペンションアクティビティ

 

package com.jltxgcy.lifecycledemo;


import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class PartActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE)  ;
		setContentView(R.layout.part_activity)  ;
	}

}

 


七つのライフサイクル試験

       最初MainActivityに入ったときは、その結果は以下の通りであります:

       

       サスペンションPartActivityを開始すると、結果は以下の通りであります:

       

       場合は、リターンキーを押して戻るMainActivity、結果は以下の通りであります:

       

       あなたがダイアログを起動すると、何の結果は、ライフサイクルには影響しません活動ダイアログを起動示す、表示されません。

       (新しいアクティビティを開くには、対応する)Homeキーを押すと、結果は以下の通りであります:

      

       あなたはMainActivityを入力するために、再度アイコンをクリックすると、結果は以下の通りであります:

      

       結果は以下の通りであるときに、プログラムを終了するには、[戻る]ボタンをクリックしてください:

     

       アクティビティのライフサイクル:

       

8つの状態は、テストを保存します。

         

        オープンMainActivity、次の図にjltxgcy、のEditTextを入力します。

        

        またはオープンPartActivity(新しい活動を開始するために)ホームボタンをクリックすると、以下に示します:

       

        あなたはMainActivityを返すようにアイコンをクリックすると、以下のように、のonCreate(バンドルsavedInstanceState)なしでこの時間は、まだ結果が表示されます。

       

       [ホーム]ボタンをクリックすると、下図のようにプロセスを強制終了。

       

       MainActivityに戻るにはもう一度クリックして、この時間は、結果は以下の通りである)onCreat(呼び出します。

   

     

      また、復元されたのEditText jltxgcyのこの時点で。

      当点击Back键时,没有调用onSaveInstanceState()。因为如果再进入MainAcitivity,则显示结果如下:

      

      此时EditText中的jltxgcy不能恢复了。


      九、代码后期我会传到github上。


 

转载于:https://www.cnblogs.com/james1207/p/3279928.html

おすすめ

転載: blog.csdn.net/weixin_30338497/article/details/94986422