第二行代码第二章笔记

第二章 探究活动

创建一个工程的几个步骤(全空工程)

  1. layout下创建新布局

  2. 新建包–新建类文件–继承Activity–重写onCreate()–方法中加入setContentView(R.layout.activity_main)

  3. 在Androidmanifest中注册

监听按钮的点击事件

  1. 匿名内部类监听按钮点击事件

    • 初始化控件,findViewById()

    • 设置监听器setOnClickListener()

  2. 外部类监听点击事件

    • 初始化控件,findViewById()

    • 自定义外部类,extends OnClickListener接口,复写onClick()方法,实现点击事件

    • 设置控件的监听器setOnClickListener();

  3. 接口方式监听按钮点击事件

    • 初始化控件,findViewById()

    • 在当前类中implements OnClickListener接口,复写onClick()方法,实现多个按钮的点击事件

    • 设置控件的监听器setOnClickListener(this);
  4. 设置控件属性的点击事件

    • 在按钮中设置一个属性android:onClick = "doClick";

    • 写入doClick()方法,用swtich实现多个按钮的点击事件

Intent(意图/信使)的使用

Intent是Android程序之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。简单说就是Intent协助完成Android各个组件之间的通讯。

显示Intent

    //FirstActivity.this为上下文,SecondActivity.class为目标活动
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    //启动活动
    startActivity(intent);
    //结果为通过FirstActivity活动打开SecondActivity活动

隐式Intent

一个Intent中只能指定一个action,但却能指定多个category,默认都有一个category:”android.intent.category.DEFAULT”
要响应Intent的活动中,在AndroidManifest中此活动需配置中的和

用Intent传递数据

    //例如从活动FristActivity传递到SecondActivity
    //FirstActivity中代码
    String data = "Hello";
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    //A是键值,B是传递的数据
    intent.putExtra("A",B);
    StartActivity(intent);
    //SecondActivity中代码
    Intent intent = getIntent();
    //接收数据
    String data = intent.getStringExtra("A");

返回数据给上一个活动

  1. 使用startActivityForResult(intent, requestCode);第一个参数是Intent对象,第二个参数是请求的一个标识。

  2. 复写onActivityResult(requestCode, resultCode, intent); requestCode与上面方法中的值一致,resultCode与下面方法中的值一致。

  3. 在第二个页面中使用setResult(resultCode, intent); 第一个参数是第二个页面返回的标识;第二个参数是第二个页面回传的数据,回传的数据可以使用intent.putExtra(String name, "需要回传的数据内容");如果第二个页面是按BACK按钮返回,则在onBackPressed()方法中使用setResult(resultCode, intent);

  4. if(resultCode == RESULT_OK && requestCode == requestCode){输出返回的数据内容},首先通过检查requestCode的值判断数据来源,确定数据是从SecondActivity返回的后再通过resultCode的值来判断处理结果是否成功,最后从intent中取值并打印,这样就完成了向上一个活动返回数据的工作。

活动的生命周期

Activity的生命周期.png

  1. standard–在 standard 模式(即默认情况)下,每当启动一个新的活动,它就会在活动栈中入栈,并处于栈顶的位置。对于使用standard 模式的活动,系统不会在乎这个活动是否已经在活动栈中存在,每次启动都会创建该活动的一个新的实例

standard.png

  1. singleTop–当活动的启动模式指定为 singleTop,在启动活动时如果发现活动栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。

singleTop.png

  1. singleTask–当活动的启动模式指定为 singleTask,每次启动该活动时系统首先会在活动栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

singleTask.png

  1. singleInstance– singleInstance 模式的活动会启用一个新的活动栈来管理这个活动(其实如果 singleTask 模式指定了不同的 taskAffinity,也会启动一个新的活动栈)

singleInstance.png

活动的最佳实践

BaseActivity,放一个活动集合实例,统一管理活动添加和销毁

知晓当前是哪个活动

1.新建一个BaseActivity继承Activity,然后重写onCreate()

2. Log.d("BaseActivity", getClass().getSimpleName())

3.让项目中所有活动类继承BaseActivity

4.运行程序,进入所有页面,观察LogCat打印信息

5.每当我们进入到一个活动的界面,该活动的雷鸣就会打印出来,这样我们就可以知道当前界面对应的是哪一个活动了。

随时随地退出程序

  1. 创建一个ActivityCollector.java,此类用作收集和销毁activity的公共类.

  2. 创建一个BaseActivity.java基类,项目中的所有activity都继承此类.

  3. 让A, B, C这三个activity分别去继承BaseActivity.java.这样只要activity一起动,或者子activity中重写了onDestroy()方法,子activity就会自动的去收集activity,去销毁某个Activity.

  4. 如何在某个地方需要一次销毁所有的activity,只需要调用ActivityCollector.java中的finishAll()方法.

启动活动的最佳写法

在我编写的每个活动中都添加类似actionStart()的启动方法,此法的好处是一目了然,SecondActivity所需要的数据全部都在方法参数中体现出来了,即使不用阅读SecondActivity代码也可以知道启动SecondActivity需要传递哪些参数,同时也只需要一行代码就可以启动SecondActivity,简化了启动代码。

//在secondActivity中
public static void actionStart(Context context, String data1, String data2){
    Intent intent = new Intent(context, SecondActivity.class);
    intent.putExtra("param1", data1);
    intent.putExtra("param2", data2);
    context.startActivity(intent)
}
//在其他活动中调用actionStart()方法启动SecondActivity
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值