第二讲 Activity详解

简介: 第二讲 Activity详解

一、引言



二、教学内容


1、Activity介绍(***)

一种包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含一个或多个活动,那么至于不包含任何活动的应用程序很少见,这类不予讨论。

20190412210756753.png


  1. manifest:应用清单,描述app所包含的东西
  2. java:程序源码
  3. generatedJava:
  4. res:资源文件

注意:可以点击简单了解下xml是啥,干啥用?


2、Activity内容的修改(*****)

  1. 静态修改
  2. 动态修改


3、新建Activity(***)

实现方法:在项目下(app或者任意文件夹)右击——>new——>activity


三种变化

  1. 增加一个新的类
  2. 增加一个对应的布局文件
  3. AndroidManifest.xml中增加注册信息

20190412212208696.png


4、Activity的跳转(*****)

Intent是Android中各组件之间进行交互的一种方式,在这一章节就进行显示跳转的一个简单演示,在onCreate()方法中实例化按钮对象,并设置鼠标监听。


  1. 显示跳转
//创建两个活动,在mainActivity中创建一个按钮,实现点击按钮跳转到next activity
//变量、控件的命名方式自行选择,
        Button btnAlert = this.findViewById(R.id.btnToNext);
        btnAlert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                //.this以及.class会在后面章节中说明
                startActivity(intent);
            }
        });


  1. 隐式跳转(在后面章节完成后,再通过超链接跳转)


5、跳转传值(****)

主要使用如下方法:

  • putExtra方法:放置数据;这个方法接受两个参数,第一个参数是键,用于后面从Intent中取值,第二个参数才是真正要传递的数据
  • getIntent:获取发送过来的意图
  • getStringExtra:获取传递的数据


MainActivity

Button btnAlert = this.findViewById(R.id.btnToNext);
        btnAlert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = "Hello Main2Activity";
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
            }


Main2Activity

Intent intent=getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d("Main2Activity",data);//日志调试


实现效果

image.png


6、跳转传值并返回(***)

所用方法如下:

  • startActivityForResult
  • setResult:放置返回数据;
  • onActivityResult:接收返回数据


7、活动状态(*****)

活动的生命周期对Android开发者十分重要,我们首先要理解返回栈的用途。


Android使用任务(Task)来管理活动,一个任务(Task)就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,默认情况下,每当我们启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或者调用finish()方法销毁一个活动时,处于栈顶的活动就会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总会显示处于栈顶的活动给用户。


  1. 运行态:活动正在和用户交互
  2. 暂停态:部分可见
  3. 停止态:完全不可见
  4. 销毁态:在返回栈中移除


七种回调方法

  • onCreate:创建活动,用于初始化
  • onStart:不可见到可见
  • onResume:准备好与用户进行交互的时候调用,处于栈顶,运行状态
  • onPause:启动或调用另一个活动时
  • onStop:可见——>完全不可见时调用
  • onDestroy:销毁活动时调用
  • onRestart:由停止变为运行状态之前调用

2019041320522924.png

拓展:关于Android生命周期的详解


8、活动的启动模式

启动模式一共有4种,在实际项目中根据需求指定。

在AndroidManifest.xml中通过标签指定android:launchMode


  1. standard:默认,创建活动时,不会考虑栈中是否已有此活动
  2. singleTop:在启动活动时,如果发现返回栈顶已经是该活动,则可直接使用
  3. singleTask:如果栈中有活动,则不会创建新活动,直接使用该实例,并把所有在这个活动之上的所有活动全部出栈。
  4. singleInstance:此活动与其他程序共享,专门的栈来维护此类活动


注:本节的实践将在后面完成课程实践后补全。

目录
相关文章
|
6月前
|
XML 监控 Android开发
Activity详解2
Activity详解
94 1
|
6月前
|
存储
Activity详解1
Activity详解
76 0
|
6月前
|
前端开发 Java Android开发
Activity
Activity
118 0
|
传感器 存储 定位技术
Activity初学乍练
Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作,比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口,而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!
|
Java 调度 Android开发
Activity登堂入室
Activity调用startActivity后最后会调用attach方法,然后在PolicyManager实现一个Ipolicy接口,接着实现一个Policy对象,接着调用makenewwindow(Context)方法,该方法会返回一个PhoneWindow对象,而PhoneWindow是Window的子类,在这个PhoneWindow中有一个DecorView的内部类,是所有应用窗口的根View,即View的老大,直接控制Activity是否显示(引用老司机原话..),好吧,接着里面有一个LinearLayout,里面又有两个FrameLayout他们分别拿来装ActionBar和Cus
100 0
|
XML ARouter API
Fragivity:像使用Activity一样使用Fragment
近年来,SPA,即单Activity架构逐渐开始受到欢迎,随之而生了很多优秀的三方库,大部分是基于Fragment作为实现方案,Fragivity 使用 Fragment + Navigatiion 打造最好用的 SPA 框架
488 0
|
Java Android开发
Activity的四种启动模式
Android的冷门知识,大家有兴趣可以了解了解
193 0
|
Android开发
Activity四种启动模式
Activity四种启动模式
|
Web App开发 Android开发