Android_Activity的生命周期

Activity的生命周期:Activity对象从被创建,到被销毁的全过程。

Activity在运行过程当中可以出于以下三种状态:
1、运行状态:该状态表示Activity可见并且拥有用户焦点。
2、暂停状态:Activity A被Activity B覆盖,但Activity A可见,则Activity A处于暂停状态。

3、停止状态:如果Activity A被Activity B完全覆盖,或者由于用户点击Home按钮导致Activity A处于后台。那么Activity A就处于停止状态。

Activity生命周期中的回调函数
1、onCreate(Bundle savedInstance) //当Activity第一次被创建时被系统回调
2、onRestart() //当Activity从停止状态重新回到运行状态时被系统回调
3、onStart() //当Activity对用户可见时被系统回调 (可视生命周期)
4、onResume() //当Activity可以和用户进行交互时被系统回调 (4-6:前台生命周期)
5、onPause() //当Activity不能与用户进行交互时被系统调用
6、onStop() //当Activity完全不可见时被系统回调
7、onDestroy() //当Activity被销毁时被系统回调





对于一个主Activity(MainActivity)和(TwoActivity(对话框的形式))
Main---onCreate
Main---onStart
Main---onResume
点击按钮(弹出对话框Activity):
Two---onpause
Two---onCreate
Two---onStart
Two---onResume
点击主页面(对话框Activity消失)
Two---onpause
Main---onResume
Two---onstop
Two---onDestory
点击Home键
Main---onpause
Main---onstop
再次点击
Main---onRestart
Main---onStart
Main---onResume
(注:如果在对话框出现时点击Home键
Two---onpause
Two---onstop
Main---onstop
再次进入
Main---onRestart
Main---onStart
Two---onRestart
Two---onStart
Two---onResume
4、生命周期回调函数的存在意义
在Activity的不同时期,系统会自动回调它的一系列回调函数。可以重写这些回调方法添加我们想要的行为。eg:当Activity处于停止状态,由于Android的一些特性,该Activity可能被系统销毁掉。因此,可以重写该回调方法, 添加我们自己的 数据保存代码等。

5、Activity状态保存( 系统内存不足或其他原因(屏幕翻转),会自动销毁该Activity,如果使用了下列的两个回调函数,当该Activity再次启动时,会自动调用下列两个回调函数,则原来的数据不会丢掉。
必须重写状态保存和状态恢复的回调函数
onSaveInstanceState(Bundle outState) //状态保存的回调函数
onRestoreInstanceState(Bundle savedInstanceState) //状态恢复的回调函数
(注:Activity状态保存:界面中的控件有设置id号,系统会为我们自动保存其状态(CheckBox),所以状态保存是保存没有id的内容。)

屏幕翻转函数:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //竖屏

package com.fs;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.e("FS", "MainActivity-->onCreate()");
		//默认的Toast
		Toast.makeText(getApplicationContext(), "onCreate()",
				Toast.LENGTH_SHORT).show();

	}

	@Override
	protected void onStart() {
		// TODO 待续...
		super.onStart();
		Log.e("FS", "MainActivity-->onStart()");
		//自定义高度的Toast
		Toast toast = Toast.makeText(getApplicationContext(),
				"onStart()", Toast.LENGTH_LONG);
		toast.setGravity(Gravity.CENTER, 150, 150);
		toast.show();

		Log.e("FS", "播放音乐--->你是我的小苹果...");
	}

	@Override
	protected void onResume() {
		// TODO 待续...
		super.onResume();
		Log.e("FS", "MainActivity-->OnReaume()");
		//自定义带图片的Toast
		Toast toast = Toast.makeText(getApplicationContext(), "onResume",
				Toast.LENGTH_LONG);
		toast.setGravity(Gravity.CENTER, 0, 0);
		LinearLayout toastView = (LinearLayout) toast.getView();
		ImageView imageCodeProject = new ImageView(getApplicationContext());
		imageCodeProject.setImageResource(R.drawable.ic_launcher);
		toastView.addView(imageCodeProject, 0);
		toast.show();

	}

	@Override
	protected void onPause() {
		// TODO 待续...
		super.onPause();
		Log.e("FS", "MainActivity-->onPause()");
		Toast.makeText(getApplicationContext(), "onPause()",
				Toast.LENGTH_SHORT).show();
	}

	@Override
	protected void onStop() {
		// TODO 待续...
		super.onStop();
		Log.e("FS", "MainActivity-->onStop()");
		Toast.makeText(getApplicationContext(), "onStop()",
				Toast.LENGTH_SHORT).show();
		Log.e("FS", "关闭《小苹果》的播放");
	}

	@Override
	protected void onDestroy() {
		// TODO 待续...
		super.onDestroy();
		Log.e("FS", "MainActivity-->onDestroy()");
		Toast.makeText(getApplicationContext(), "onDestroy()",
				Toast.LENGTH_SHORT).show();
	}

	@Override
	protected void onRestart() {
		// TODO 待续...
		super.onRestart();
		Log.e("FS", "MainActivity-->onRestart()");
		Toast.makeText(getApplicationContext(), "onRestart()",
				Toast.LENGTH_SHORT).show();
	}

	public void jump2Two(View v) {
		startActivity(new Intent(this, TwoActivity.class));
	}
}
<pre name="code" class="java">package com.fs;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;

public class TwoActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_two);
		Toast.makeText(getApplicationContext(), "onCreate()",
				Toast.LENGTH_SHORT).show();
		Log.e("FS", "2222222-->onCreate()");
	}
	@Override
	protected void onStart() {
		// TODO 待续...
		super.onStart();
		Log.e("FS", "2222222-->onStart()");
		Toast.makeText(getApplicationContext(), "onStart()",
				Toast.LENGTH_SHORT).show();
	}
	
	@Override
	protected void onResume() {
		// TODO 待续...
		super.onResume();
		Log.e("FS", "2222222-->onResume()");
		Toast.makeText(getApplicationContext(), "onResume()",
				Toast.LENGTH_SHORT).show();
	}
	@Override
	protected void onPause() {
		// TODO 待续...
		super.onPause();
		Log.e("FS", "2222222-->onPause()");
		Toast.makeText(getApplicationContext(), "onPause()",
				Toast.LENGTH_SHORT).show();
	}
	@Override
	protected void onStop() {
		// TODO 待续...
		super.onStop();
		Log.e("FS", "2222222-->onStop()");
		Toast.makeText(getApplicationContext(), "onStop()",
				Toast.LENGTH_SHORT).show();
	}
	@Override
	protected void onRestart() {
		// TODO 待续...
		super.onRestart();
		Log.e("FS", "2222222-->onRestart()");
		Toast.makeText(getApplicationContext(), "onRestart()",
				Toast.LENGTH_SHORT).show();
	}
	@Override
	protected void onDestroy() {
		// TODO 待续...
		super.onDestroy();
		Log.e("FS", "2222222-->onDestroy()");
		Toast.makeText(getApplicationContext(), "onDestroy()",
				Toast.LENGTH_SHORT).show();
	}

	
}


 
layout文件
<pre name="code" class="java"><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:onClick="jump2Two"
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转界面" />

</RelativeLayout>


 
<pre name="code" class="java"><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".TwoActivity" >

    <TextView
        android:textSize="30sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="第二个界面" />

</RelativeLayout>


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值