[android] activity的生命周期详解手机开发

MainActivity里面重写以下方法:

在这些方法里面打印log日志,为了方便查看在filter里面增加一个System.out来过滤

onCreate()

 

onDestory()

 

onPause()

 

onResume()

 

onStart()

 

onStop()

 

第一次打开一个activity和关闭时,这个调用顺序onCreate ==> onStart  ==> onResume ==>关闭  ==> onPause  ==> onStop ==> onDestroy

 [android] activity的生命周期详解手机开发

 

打开第二个activity的流程,第一个界面的状态  onCreate  ==>  onStart  ==>  onResume  ==> 打开第二个activity  ==>  onPause  ==>  onStop  ==>  关闭第二个  ==>  onStart  ==>  onResume  ==> 关闭第一个  ==>  onPause  ==>  onStop  ==>  onDestroy

 

测试获取焦点和失去焦点,建立第三个Activity,修改样式,在预览界面有一个AppTheme的小控件,里面Theme有个对话框的选项,在清单文件中,给<activity/>节点添加主题属性

设置主题android:theme=[email protected]:style/Theme.Dialog” 系统R文件的样式,对话框的风格

点击按钮打开这个activity,这时第一个界面会调用 onPause 方法,失去焦点

点击空白部分,第一个界面会得到焦点,onResume 方法

 

生命周期两两对应,可以分为三个,完整生命周期,可视生命周期,前台生命周期,点击后退按钮会销毁activity

 

生命周期的使用场景,数据的持久化,比如在写微博,当用户不小心按了后退按钮,activity会调用onDestroy方法,我们就可以把数据存到文件或者sp里面

当界面从新可见的时候,会调用onStart方法,我们可以做一些界面的更新或者业务逻辑的变化

 

比如:当跳转了activity,要求用户配置某些东西时,用户没有配置就点了返回,这时,我们可以把检测网络的代码写到onStart()方法里面,这样用户体验不好,可以使用对话框

获取AlertDialog.Builder对象,通过new Builder(context)得到,参数:上下文

调用builder对象的setTitle()方法,设置标题

调用builder对象的setMessage()方法,设置内容

调用builder对象的setPositiveButton(text,listener)方法,设置确定按钮,参数:文字,OnClickListener接口对象,通过匿名内部类直接new出来,重写onClick()方法

调用builder对象的create()方法调用show()方法,创建并展示出来

 

package com.tsh.lifecye; 
 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 
 
public class MainActivity extends Activity { 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        System.out.println("onCreate"); 
    } 
    //提示对话框 
    @Override 
    protected void onStart() { 
        super.onStart(); 
        System.out.println("onStart"); 
        AlertDialog.Builder builder=new Builder(this); 
        builder.setTitle("提示"); 
        builder.setMessage("我是一个好人"); 
        builder.setPositiveButton("确定", new OnClickListener() { 
             
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
                Toast.makeText(MainActivity.this, "yes是的", 0).show(); 
            } 
        }); 
        builder.create().show(); 
    } 
 
    @Override 
    protected void onResume() { 
        // TODO Auto-generated method stub 
        super.onResume(); 
        System.out.println("onResume"); 
    } 
 
    @Override 
    protected void onPause() { 
        // TODO Auto-generated method stub 
        super.onPause(); 
        System.out.println("onPause"); 
    } 
 
    @Override 
    protected void onStop() { 
        // TODO Auto-generated method stub 
        super.onStop(); 
        System.out.println("onStop"); 
    } 
 
    @Override 
    protected void onDestroy() { 
        // TODO Auto-generated method stub 
        super.onDestroy(); 
        System.out.println("onDestroy"); 
    } 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5468.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论