android之路,activity的生命周期

android之路,activity的生命周期
android之路,activity的生命周期

Activity生命周期,需要创建activity时,首先调用oncreate()方法,在oncreate()方法里可以进行许多初始化的操作;接着调用onstart()方法;下一步调用onresume()方法;接下来activity就开始运行了;如果此时调用一个新的activity,那么前一个activity会调用onpause()方法,在此之后系统有权限杀死之前的activity

如果新调用的activity没有掩盖之前的activity,例如调用了一个对话框,那么在用户再次需要的时候,前一个activity会调用onresume()方法;如果高优先级的进程需要内存,它会杀死前一个activity,用户再次需要前一个activity的时候会调用oncreate()方法重新创建。

如果新调用的activity覆盖了之前的activity,前一个会调用onstop()方法,当用户再次需要前一个activity的时候会调用onrestart()方法;如果高优先级的进程需要内存,它会杀死前一个activity,当用户需要的时候会调用oncreate()方法重新创建。由此可见在onpause方法里面需要保存一些数据,而且要快速的操作,因为下一个activity需要执行。

调用onstop方法以后,如果activity执行完毕了,就会执行ondestroy方法,关闭activity

 

Activity保存信息

假设在写短信的时候突然之间来一个电话,那么在挂掉电话之后,短信里编辑的内容还是会存在的。短信这个activity被电话activity打断了,再次返回时需要重新调用oncreate方法,而oncreate方法的参数是一个bundle类型的。Android提供一个函数来保存数据

onSaveInstanseState(Bundle state)

这个函数会在onpause之后ondestroy之前执行,一次需要重写改方法

    protected void onSaveInstanseState(Bundle state)

    {

       super.onSaveInstanceState(state);//在重写该方法之前必须先调用super

       String content = txt.getText().toString();//获取editview里的字符

       state.putString(CONTENT, content);//将获取的字符串赋值给CONTENT

    }

系统在调用oncreate方法的时候会传入参数,默认的是null,如果重写了onSaveInstanseState(Bundle state)方法,那么就因该在oncreate方法里检查参数

if(savedInstanceState != null && savedInstanceState.containsKey(CONTENT))

       {

//检测savedInstanceState不等于空,而且savedInstanceState里包含CONTENT内容

           txt.setText(savedInstanceState.getString(CONTENT)); 

           //将信息写回edittext

       }

 

Android theme主题样式

androidtheme = “@android:style/Theme.Dialog”//对话框

androidtheme = “@android:style/Theme.NoTitleBar”//没有标题栏

androidtheme = “@android:style/Theme.NoTitleBar.Fullscreen”//全屏

androidtheme = “@android:style/Theme.Light//白色背景

androidtheme = “@android:style/Theme.Light.NoTitleBar”

androidtheme = “@android:style/Theme.Light.NoTitleBar.Fullscreen”

androidtheme = “@android:style/Theme.Black”//黑色背景

androidtheme = “@android:style/Theme.Black.Light.NoTitleBar”

androidtheme = “@android:style/Theme.Black.Light.NoTitleBar.Fullscreen”

androidtheme = “@android:style/Theme.Wallpaper”//以壁纸做背景

androidtheme = “@android:style/Theme.Wallpaper.NoTitleBar”

android:theme= “@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen”

上一篇:我的jQuery动态表格插件二


下一篇:Android BottomSheet:List列表或Grid网格展示(3)