Android之路:Activity的学习

来源:互联网 发布:2017最新网络语言 编辑:程序博客网 时间:2024/06/13 20:56

一、Activity:一种可以包含用户界面的组件

1.1、创建活动的简单流程

  • 在src目录中添加一个类,并继承Activity,并重写Activity的onCreate()方法;
  • 创建和加载布局文件;
  • 在AndroidManifest文件中注册,其中,活动的注册声明放在<application>中,并通过<activity>标签来对活动进行注册的:首先用android:name来指定具体注册哪一个活动;其次,android:label用来指定活动中标题栏的内容;然后,在<activity>标签中的<intent-filter>标签中声明该活动是否是主活动;
  • 在主程序可以选择是否隐藏标题栏,用requestWindowFeature(Window.FEATURE_NO_TITLE),但要用在setContentView()之前;
  • android中一种好的提醒方式:Toast。用法:通过静态方法makeText()创建一个toast对象,调用show()方法显示出来即可;makeText有三个参数:第一,Context;第二,显示的文本内容;第三,显示的时长;
  • 在活动中可以使用菜单Menu。创建流程:通过onCreateOptionsMenu()方法。在menu文件夹下创建菜单文件(布局文件),其中,<item>标签是用来创建具体的某一菜单项的;然后,用getMenuInflater()来得到MenuInflater对象,在调用inflate方法就可以创建菜单了。inflate接收两个参数:第一个位资源文件,第二个指定我们的菜单项添加到哪一个Menu对象中,可以直接使用onCreateOptionsMenu()方法中传入的menu参数,然后返回true,表示允许创建的额菜单显示出来。重写onOptionsItemSelected()方法可以定义菜单响应事件,在该方法中,可以通过item.getItemId()来判断我们点击的是哪一个菜单项。
1.2、销毁活动
  • 直接使用finish()方法即可;
二、Intent:意图,用于在活动之间切换
2.1、显示Intent
  • 利用Intent(Context,class)构造一个Intent;
  • startActivity();
2.2、隐式Intent:通过指定一系列更为抽象的action和category等信息,然后教由系统去分析这个intent并找出合适的活动去启动;
action和category都只是一个字符串;
  • 每个intent中只能指定一个action,但却能指定多个category;
  • 可以调用addCategory()方法来添加一个category;
2.3、向下一个活动中传递数据
  • putExtra()接受数据,第一个参数为键,用于后面从intent中取值,第二个为传递的数据;
  • getIntent():用于获取启动活动的Intent;
2.4、返回数据给上一个活动
  • startActivityForResult():也是用于启动活动的,但在活动销毁的时候能够返回一个结果给上一个活动。它接受两个数据:第一个为intent,第二个参数为请求码,用于在之后的回调中判断数据的来源;
  • setResult():专门用于向上一个活动返回数据的,其接收两个参数:第一个参数为用于向上一个活动返回处理结果,一般只是用RESULT_OK或RESULT_CANCELED,第二个参数是把带有数据的Intent传递回去;
  • 在活动销毁后会调用上一个活动的onActivityResult()方法,因此这个方法需要在上个活动中重写来得到返回的数据;它有三个参数:第一个参数为requestCode,即我们在启动活动时传入的请求码;第二个参数为resultCode,即我们在返回数据时传入的处理结果;第三个参数data,即携带着返回数据的Intent;
2.5、活动的生命周期
  • 返回栈:栈是一种后进先出的数据结构,在默认情况下,每当我们启动一个新的活动时,它会在返回栈中入栈,处于栈顶的位置。
  • 活动状态:运行状态、暂停状态、停止状态、销毁状态
  • 活动的生存期:
  1. 完全生存期:onCreate():在活动第一次被创建的时候被调用,用于完成活动的初始化操作;onDestroy()在活动销毁之前调用,之后活动的状态将变为销毁状态;一般情况下,一个活动会在onCreate中完成各项初始化操作,而在onDestroy中完成释放内存的操作;
  2. 可见生存期:onStart()在活动由不可见变为可见时调用;onStop()在活动完全不可见的时候调用;可以通过这两个方法来管理那些对用户可见的资源;
  3. 前台生存期:onResume()在活动准备好和用户进行交互的时候调用;onPause()在系统准备去启动或恢复一个活动时调用;
2.6、活动的启动模式:standard、singleTop、singleTask、singleInstance
  • standard:对于使用标准模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例;
  • singleTop:在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例;
  • singleTask:每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例;
  • singleInstance:启用一个新的返回栈来管理这个活动;因为每一个应用程序都有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例,为了实现不同的应用程序共享这个活动,可以采用这种模式;
2.7、活动的最佳实践
  • 实现当前是在哪一个活动;
  • 随时随地退出程序:用一个专门的集合类对所用的活动进行管理
  • 启动活动的最佳写法


0 0