理解Activity中的方法回调

理解Android中Activity的方法回调

这篇文章主要介绍了理解Android中Activity的方法回调,本文用一个完整实例模拟了Activity方法回调的过程,从而加深理解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);  
    }  
}

通过上述代码我们可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的。这样可以达到接口统一,实现不同。系统通过在不同的状态“回调”我们的实现类,来达到接口和实现的分离。

转载至https://www.jb51.net/article/64764.htm。

原文地址:https://www.cnblogs.com/niconotine/p/10138839.html

时间: 2024-08-01 22:33:56

理解Activity中的方法回调的相关文章

在Activity中onCreate方法里面获取空间宽度和高度的新姿势

以前获取一个View的宽度和高度,总是在Activity中的onCreate方法中获取不到,那么我们怎么在onCreate方法中获取到控件的宽度和高度呢? 方法:用View中的post方法- 代码如下: public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConten

深度理解Jquery 中 offset() 方法

多说无益,现在就开始! 一.语法 1. 返回偏移坐标 $(selector).offset(); top: $(selector).offset().top; left: $(selector).offset().left; 2.设置偏移坐标: $(selector).offset({top:value,left:value}); 参数的含义:{top:value,left:value}     当设置偏移时是必需的.规定以像素为单位的 top 和 left 坐标. 可能的值:(1).名/值对,

Activity中recreate方法的应用

参考两篇文章:http://blog.csdn.net/watermusicyes/article/details/47392949 http://blog.csdn.net/droyon/article/details/21275797 recreate可以使用在日间/夜间模式的切换,那么调用recreate()函数将会执行哪些方法呢? 代码: public class MainActivity extends FragmentActivity implements OnClickListen

深度理解Jquery 中 scrollTop() 方法

这是工作遇到scrollTop() 方法.为了强化自己,把它记录在博客园当中. 下面就开始scrollTop 用法讲解: scrollTop() 定义和用法 scrollTop() 方法设置或返回被选元素的[垂直滚动条位置]. Note: 当滚动条位置位于最顶部时,位置是0:当用于返回位置时:    该方法返回 第一个匹配元素的滚动条的垂直位置.当用于设置位置时:    该方法设置 所有匹配元素的滚动条的垂直位置. scrollTop() 语法 返回滚动条位置 $(selector).scrol

Android菜单详解——理解android中的Menu

Android菜单详解--理解android中的Menu 前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至今为止看到的最好的一本android书,中文版出到<精通Android 2>. 理解Android的菜单 菜单是许多应用程序不可或缺的一部分,Android中更是如此,所有搭载Android系统的手机甚至都要有一个"Menu&qu

怎样在一个fragment or 随意类中操作还有一个fragment中的方法

1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragmentManager.findFragmentByTag("xx"); 2 怎样在Fragment中运行activity中的方法: 第一种:让acitivity继承接口 另外一种:在fragment中使用getActivity()可是要加上acitivity的名字,即: ((MainActi

js 调用父窗口中的方法

window.open调用父窗口中的方法 回调函数: function fun9(ex){ alert(ex); } 调用语句: window.open("RoomSelecter.htm?Ran"+Math.random(), "RoomSelecter"); 窗口页面中调用父窗口中的语句: if (window.opener && window.opener.fun9) { window.opener.fun9("ADF");

理解JS中的call、apply、bind方法

理解JS中的call.apply.bind方法(*****************************************************************) 在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:apply . call .bind 三者都是用来改变函数的this对象的指向的:apply . call .bind 三者

android小技巧:在activity中实现与绑定的fragment的回调

看到标题你可能会想是一个多么高大上的技巧呢?其实很一般就是自定义回调函数. 首先我们知道activity之间的数据传递有几种方式: 一是startActivityForResut()启动一个activity,当栈顶activity 调用onActivityResult()并且 finish 掉时将会传递消息给启动该activity的父activity. 二是在使用Fragment时,通过setTargetFragment()和onActivityResult()方法实现两个fragment之间的