理解Android中Activity的方法回调
作者:junjie 发布时间:2023-06-27 13:35:36
标签:Android,Activity,方法回调
为什么需要方法回调?
方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想。在JAVA中回调是通过接口来实现的。作为一种系统架构,必须要有自己的运行环境,并且要提供用户的实现接口。
下面通过实例来模拟一下Android中Activity的方法回调思想。
Activity接口
package com.xujing.test
//定义接口
public interface Activity{
//创建时调用的方法
public void onCreate();
//启动时调用的方法
public void onStart();
//销毁时调用的方法
public void onDestory();
}
Activity接口的实现类MyActivity
package com.xujing.test
//定义一个类实现Activity接口
public void MyActivity implements Activity{
//实现创建方法,简单输出提示信息
@Override
public void onCreate(){
System.out.println("onCreate....");
}
//实现启动方法,简单输出提示信息
@Override
public void onStart(){
System.out.println("onStart....");
}
//实现销毁方法,简单输出提示信息
@Override
public void onDestory(){
System.out.println("onDestory....");
}
}
系统运行环境类AndroidSystem
package com.xujing.test
//系统运行环境类
public class AndroidSystem{
//定义创建常量
public static final int CREATE=1;
//定义启动常量
public static final int START=2;
//定义销毁常量
public static final int DESTORY=3;
//运行方法
public void run(Activity a,int state){
switch(state){
//创建
case CREATE:
a.onCreate();
break;
//启动
case START:
a.onStart();
break;
//销毁
case DESTORY:
a.onDestory();
break;
}
}
}
测试类:
package com.xujing.test
//测试类
public class Test{
//主方法
public static void main(String[] args){
//实例化AndroidSystem
AndroidSystem system = new AndroidSystem();
//实例化MyActivity
Activity a = new MyActivity();
//创建
system.run(a,AndroidSystem.CREATE);
//启动
system.run(a,AndroidSystem.START);
//销毁
system.run(a,AndroidSystem.DESTORY);
}
}
通过上述代码我们可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的。这样可以达到接口统一,实现不同。系统通过在不同的状态“回调”我们的实现类,来达到接口和实现的分离。


猜你喜欢
- 本文实例分析了Android多线程。分享给大家供大家参考,具体如下:在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函
- Java 实现 Http Server,模拟前端接口调用前言: 最近看到一个很有意思的东西,手写简单的 Http Server,而且只需要使
- 前言在SpringIOC中,我们熟知的BeanScope有单例(singleton)、原型(prototype), Bean的Scope影响
- 1、@Select注解基本用法@Select注解的目的是为了取代xml中的select标签,只作用于方法上面。下面看一下@Select注解的
- .net 是一种多语言的平台,开发.net 可以用多达几十种语言进行。  
- JNA(Java Native Access):建立在JNI之上的Java开源框架,SUN主导开发,用来调用C、C++代码,尤其是底层库文件
- 前言相信对于RxJava,大家应该都很熟悉,他最核心的两个字就是异步,诚然,它对异步的处理非常的出色,但是异步绝对不等于并发,更不等于线程安
- 通过2种方式模拟单个文件上传,效果如下所示开发步骤如下:1、新建一个web工程,导入struts2上传文件所需jar,如下图目录结构2、新建
- 目录或库文件名中包含汉字或空格的话,请将其用半角双引号括住。项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项项目、
- 如下所示:<?xml version="1.0" encoding="utf-8" ?>
- 核心考点:链表操作,临界条件检查,特殊情况处理在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针
- 本文实例讲述了C#实现将程序运行信息写入日志的方法。分享给大家供大家参考。具体如下:1.LogManager类class LogManage
- 我们都知道在一些特殊的场景,我们需采用特殊的编码格式,如:UTF-8,但是系统默认的编码为ISO-8859-1那么我们就需要将编码转换为我们
- 环境: idea2020.1插件: LeetCode-editor 6.7一、IDEA安装LeetCode插件安装完成重启idea打开插件U
- 这篇文章主要介绍了java 读取系统Properties代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 1、定义方法的格式 访问修饰符 返回类型 方法名 (参数列表) { // 方法的主体… }2、静态方法在大多数时候,我们定义写一个方法,会把
- 目录什么是角点?为什么要检测角点?Harris角点检测API操作效果源码什么是角点?角点就是极值点,即在某方面属性特别突出的点。当然,你可以
- 前言在前面的学习中,我们基本了解了一些 Canvas 的绘制,那么这一章我们一起复习一下图片的绘制几种方式,和事件的简单交互方式。我们从易到
- rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用
- Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要好用得多1、在pom.xml引入依赖包<!-- Swa