Activity共4种状态:
1.运行:Activity位于前台,用户可以看见,可以操作
2.暂停:Activity位于前台,用户可以看见,但不能操作
3.停止:Activity不可见,但仍然存在。
4.销毁:Activity结束或所在线程结束,需要重新启动才能再使用。
共7种周期方法控制周期:
1.onCreate():生命周期开始时调用
2.onStart():即将被用户可见时调用
3.onRestart():从停止重新开始时调用
4.onResume():要与用户交互时调用
5.onStop():启动另一个activity时调用,保存当前activity的信息
6.onPause():其他activity覆盖当前activity导致当前activity不可见时调用;当前activity被销毁时调用。
7.onDestroy():完全结束,被销毁时调用
这些周期函数一开始都是空的,需要自己根据对app不同时候的不同功能需求进行重写。在对应的情况下,会自动调用对应的周期方法执行里面的代码。例如,想要在开启时添加动画,可重写onStart()方法。
接下来在demo中使用这些方法并在其中加入日志反馈信息,观察在对activity操作时都调用了哪些周期方法,周期怎么变化:
为了方便对activity进行操作,设置了2个很简单的按钮,1个按钮(jump)控制跳转,1个按钮(close)控制activity关闭。
MainActivity:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.sql.BatchUpdateException;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("tag","onCraet");
Button jump = (Button) findViewById(R.id.jump);
Button close = (Button)findViewById(R.id.close);
jump.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击jump按钮进行activity跳转,跳至JumpActivity
Intent intent = new Intent(MainActivity.this,JumpActivity.class);
startActivity(intent);
}
}
);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//结束当前activ
MainActivity.this.finish();
}
}
);
}
protected void onStart(){
super.onStart();
Log.e("tag","onStart");
}
protected void onRestart(){
super.onRestart();
Log.e("tag","onRestart");
}
protected void onResume(){
super.onResume();
Log.e("tag","onResume");
}
protected void onPause(){
super.onPause();
Log.e("tag","onPause");
}
protected void onStop(){
super.onStop();
Log.e("tag","onStop");
}
protected void onDestroy(){
super.onDestroy();
Log.e("tag","onDestroy");
}
}
MainActivity的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:background="#ffffff"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="56dp"
>
<Button
android:id="@+id/jump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Jump"/>
<Button
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close"/>
</LinearLayout>
只是空界面的JumpActivity:
import android.app.Activity;
import android.os.Bundle;
public class JumpActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jump);
}
}
接下来在Android Studio中点击Logcat进入日志查看窗口:
在右边下拉框中选择Edit…创建一个Log日志项,输入对应的tag,方便按照Log(tag,message)中的tag查找要查看的日志信息。我创建了testdemo。创建后选择它,运行程序,查看:
结果如下:
①点击运行,进入MainActivity:
开始一个Activity时:onCreate() → onStart()→ onResume()
②点击Jump按钮,跳转至另一个activity:
跳转至另一个Activity时:onPause() → onStop()
③返回,回到之前的activity:
由另一个Activity返回当前Activity时:onRestart() → onStart() → onResume()
④点击Close按钮,关闭activity:
关闭Activity时:onPause() → onStop → onDestroy()
每部分加蓝色的就是对应操作调用的周期方法。
想要实现app界面不同状态下的不同功能动作,只需要重写相应的周期方法即可。
仍在入门,如有错误,欢迎指出