前言:
接触Android快两个礼拜了,虽然已开发了一个非常简单的app,但却还没有理清Activity的生命周期,自然对它里面的几种方法的含义没有彻底清楚的认识,今天好好总结一下。
一、Activity的生命周期:
(1)运行状态:Activity位于前台,用户可见,可以获得焦点。
(2)暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
(3)停止状态:该Activity不可见,失去焦点。
(4)销毁状态:该Activity结束,或者Activity所在进程结束。
二、Activity的加载模式:
好了,看到上面的图,相信你已经明白,activity什么时候加载哪个函数了,只需要在相应的函数中进行重写就可以了,下面程序进行简单测试,可以烧写进手机体验一下。
Mainactivity:
package com.example.x_yp.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity
{
final String TAG = "--CrazyIt--";
Button finish ,startActivity;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 输出日志
Log.d(TAG, "-------onCreate------");
finish = (Button) findViewById(R.id.finish);
startActivity = (Button) findViewById(R.id.startActivity);
// 为startActivity按钮绑定事件监听器
startActivity.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Intent intent = new Intent(MainActivity.this
, SecondActivity.class);
startActivity(intent);
}
});
// 为finish按钮绑定事件监听器
finish.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
// 结束该Activity
MainActivity.this.finish();
}
});
}
@Override
public void onStart()
{
super.onStart();
// 输出日志
Log.d(TAG, "-------onStart------");
}
@Override
public void onRestart()
{
super.onRestart();
// 输出日志
Log.d(TAG, "-------onRestart------");
}
@Override
public void onResume()
{
super.onResume();
// 输出日志
Log.d(TAG, "-------onResume------");
}
@Override
public void onPause()
{
super.onPause();
// 输出日志
Log.d(TAG, "-------onPause------");
}
@Override
public void onStop()
{
super.onStop();
// 输出日志
Log.d(TAG, "-------onStop------");
}
@Override
public void onDestroy()
{
super.onDestroy();
// 输出日志
Log.d(TAG, "-------onDestroy------");
}
}
SecondActivity:
package com.example.x_yp.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("SecondActivity");
setContentView(tv);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<Button
android:id="@+id/startActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="启动SecondActivity"
/>
<Button
android:id="@+id/finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="退出"
/>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.x_yp.test" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="SecondActivity"
android:theme="@style/AppTheme" >
</activity>
</application>
</manifest>