Android四大核心组件——Activity活动

Activity


Activity是Android系统的核心组件之一!由Android系统进行管理和维护!

Activity表现为处理所有与UI相关的业务!

Activity的生命周期


在Android系统中,将Activity也划分出了不同的生命周期阶段,并且在不同的阶段会由Android系统去调用不同的方法,这些方法被称之为“生命周期方法”,共有7个:

  • void onCreate() -> 当Activity被创建时,每个Activity对象,该方法仅会被调用1次,通常在该方法中编写初始化相关代码
  • void onStart() -> 当界面将要被显示时,该方法被调用的时刻是界面可能已经显示了一部分,但是没有完全显示在屏幕中
  • void onResume() -> 当界面完全显示在屏幕中时
  • void onRestart() -> 当界面从后台回到前台时
  • void onPause() -> 当界面将要被置于后台时,该方法被调用的时刻是界面可能将要离开屏幕了,但是,仍有一部分还在屏幕范围之内
  • void onStop() -> 当界面已经完全被置于后台时
  • void onDestroy() -> 当界面被销毁时,该方法只会被调用1次,通常用于编写最后释放资源等相关代码

当第1次创建并显示界面时 : onCreate() -> onStart() -> onResume()

当被置于后台时:onPause() -> onStop()

当界面从后台回到前台时:onRestart() -> onStart() -> onResume()

当按下BACK键时:onPause() -> onStop() -> onDestroy()


  • 学习Activity的生命周期的意义在于:把合适的代码重写在合适的方法中!
  • 永远不要调用任何生命周期方法,这些方法是用于被重写的,是被Android调用的方法!

创建新的Activity


1.必要 继承 :自定义类,继承自android.app.Activity

2.必要 注册:在AndroidManifest.xml文件中,在节点下,添加新的节点,并为该节点配置android:name属性和android:label属性,其中,android:name属性的值应该是自定义Activity类的包名和类名,android:lable属性的值是字符串,会被作为该Activity的标题栏文字,并且,如果该Activity是入口Activity,该属性还会是应用程序列表中的名称!

    <application
      ......>
      <activity android:name="cn.tedu.demo.SecondActivity"
        android:label="标题">
      </activity>
    </application>

3.可选 设计界面:在res\layout\下创建新的XML文件,以设计界面的布局

4.可选 应用布局:在自定义Activity类中,重写onCreate()方法,并在该方法中调用setContentView(int layoutResId)方法以加载布局

激活Activity


调用startActivity(Intent intent)方法即可激活Activity!


销毁Activity


调用finish()方法即可销毁Activity!


finish()与onDestroy()

finish()是给开发者调用的方法;onDestroy()是给开发者重写的方法!

一旦调用finish()方法,会使得整个Activity对象走向onPause() -> onStop() -> onDestroy()的流程!

如果希望销毁Activity,则应该调用finish()方法,如果希望决定销毁过程中执行什么代码,则应该重写onDestroy()方法!

如何一次性销毁当前应用程序中所有已经激活的Activity

1.自定义类ActivityManager,并在该类中声明声明public static List<Activity> activities = new ArrayList<Activity>(); 该activities用于记录所有已经激活的Activity;

2.自定义类BaseActivity,将这个类声明为abstract,即抽象类,并继承自android.app.Activity,然后,在该类中,重写onCreate()方法,在该方法中调用ActivityManager.activities.add(this);,并且,重写onDestroy()方法,在该方法中调用ActivityManager.activities.remove(this);将自身Activity对象从集合中移除,即:已经在过程中销毁的Activity不会在最后一次性销毁时再统一管理;

3.在本项目中所有的其它Activity都应该继承自BaseActivity;

4.当需要一次性销毁所有Activity时,使用Iterator遍历activities集合,逐一调用每个Activity对象的finish()方法!

Activity的状态


  • 运行态 Activity正处于前台,完全可见,并可控
  • 暂停态 Activity局部处于前台,局部可见,并完全不可控,出现这种状态是由于被另一个非全屏的Activity所遮挡而导致
  • 停止态 Activity已经被置于后台,完全不可见,更加不可控
  • 终止态 Activity已经被销毁

按键处理

在Activity中,重写onKey???()系列方法,可以实现对按键的处理,例如重写onKeyDown()或onKeyUp()方法,在这些方法中,第1个参数int keyCode表示按下的是哪个键,可以使用KeyEvent类的静态常量KEYCODE_???进行判断。

AlertDialog:警告对话框

使用AlertDialog.Buider对象可以实现配置并创建对话框,常用方法有:

  • Builder setIcon(int resId) -> 设置图标
  • Builder setTitle(CharSequence title) -> 设置标题栏文字,取值可以是String,也可以是StringBuffer或StringBuilder
  • Builder setTitle(int titleResId) -> 设置标题栏文字,取值例如:R.string.app_name
  • Builder setMessage(CharSequence msg) -> 设置对话框正文的文字
  • Builder setMessage(int msgResId) -> 同上
  • Builder setCancelable(boolean cancelable) -> 设置是否允许点击对话框以外的区域以隐藏对话框
  • Builder setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener) -> 设置按钮,通常用于表示正面的、积极的、肯定的意义,该按钮会显示在对话框的最右侧
  • Builder setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener) -> 设置按钮,通常用于表示负面的、消极的、否定的意义,该按钮会显示在对话框的最左侧
  • AlertDialog create() -> 创建对话框

关于AlertDialog的常用方法有:

  • void show() -> 显示对话框
  • void dismiss() -> 隐藏对话框
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值