Java 实现函数回调
在Java里没用委托(delegate)这方法,所以想要实现回调还是有些麻烦。(想了解C#如何实现?请查看:http://www.cnblogs.com/Martin_Q/p/4478494.html)
那么在Java如何实现回调方式?其实在百度里搜一下一堆这样的教程,我也只是从上面的其中一篇抄下来,修改成自己想要的。
不过我的使用有点点不一样,在为我是在程序出现异常的时候再去主动调用回调的函数。而且异常部份的代码在一个Jar包里!少废话,下面开始:
public final class Dump{
private static final long CB_USER_FUNCTION_MILLIS = 200;
/**
* 回调函数接口
* @author Administrator
*/
public static interface CallBack{
void UserFunctionCB();
}
private static CallBack cbFunction;
/**
* 设置回调函数
* @param cbFun
*/
public static void setCallBackFunction(CallBack cbFun){
cbFunction = cbFun;
}
/**
* 当出现异常时会自动回调此函数,具体如何实现异常回调就不在这里详细描述了
*/
public static void hanleNDKException(){
if(cbFunction != null)
{
Thread th = new Thread()
{
@Override
public void run()
{
cbFunction.UserFunctionCB();
}
};
th.start();
try
{
// 允许用户的执行时间,超过时间后将不再管此线程执行结果
th.join(CB_USER_FUNCTION_MILLIS);
}
catch (InterruptedException e)
{
Logger.logError(LOG_TAG, "Callback user function on thread.join(millis) Error:", e);
}
}
// do something
}
}
外面调用的函数如何去实现UserFunctionCB这函数呢?相信大家都知道了。
public class TestCB{
public static void main(String[] args){
Dump.setCallBackFunction(new Dump.CallBack() {
@Override
public void UserFunctionCB() {
// 这里就是你需要实现的函数,回调的时候会执行你的这个函数
// 你可以在这里添加任意内容,不过你得保证他能在你的指定时间内完成
System.out.println("Hello Call Back Function!");
}
});
// 以下是一个异常触发的操作
String abc = null;
abc.toString();
}
}
到这里整个回调过程已经完成了,当出现任何异常的时候,都会去执行你的函数,去获取你想需要的一些内容!
Java 实现函数回调的更多相关文章
- Java中的回调函数学习
Java中的回调函数学习 博客分类: J2SE JavaJ# 一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...
- Java中的回调函数学习-深入浅出
Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...
- jni不通过线程c回调java的函数 --总结
1.JNIEnv类型是一个指向全部JNI方法的指针.该指针只在创建它的线程有效,不能跨线程传递 2.JavaVM是虚拟机在JNI中的表示,一个JVM中只有一个JavaVM对象,这个对象是线程共享的. ...
- (翻译)理解Java当中的回调机制
原文地址:http://cleancodedevelopment-qualityseal.blogspot.com/2012/10/understanding-callbacks-with-java. ...
- 编程基础——C/C++,Java,ObjC讨论回调模式
什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...
- Java调用和回调总结(2)
Java调用和回调总结(2) 调用的种类 调用有3种, 普通调用(同步调用), 异步调用, 异步回调. 三种调用的特点 普通调用: 也叫做同步调用 , 最常见的调用, 会造成阻塞. 异步调用 : 异步 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- hive 调用java的函数和科学记数法转换
hive中field如果是string,比如id,那么使用10000000000+id结果是科学计数法显示,转换为正常显示方法: select (10000000000+cast(id as int) ...
- [Java]_函数传参的疑惑与思考
问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. void dfs(TreeNode node , int sum , ArrayList& ...
随机推荐
- CodeTimerPerformance EasyPerformanceCounterHelper .NET 4.5
//#define NET35 namespace TestConsoleApplication { using System; using System.Diagnostics; using Sys ...
- jQuery插件(cookie存值)
使用cookie插件后,可以很方便地通过cookie对象保存.读取.删除用户的信息,还能通过cookie插件保存用户的浏览记录,它的调用格式为: 保存:$.cookie(key,value):读取:$ ...
- pandas 学习(2): pandas 数据结构之DataFrame
DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型.在其底层是通过二维以及一维的数据块实现. 1. ...
- Jenkins + Ant + Git + Tomcat自动化部署
环境linux下,大致的配置内容如下: 首先安装JDK配置环境变量等. 其次安装ANT配置ANT_HONE并把bin目录加入PATH中. 然后安装Git,并生成sshkey配置ssh 安装tomcat ...
- C# 与 C++ 数据类型比较及结构体转换
引自:http://www.blogjava.net/heting/archive/2010/03/20/315998.html C++ C# =============== ...
- [Leetcode] Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' - ...
- ffplay代码播放pcm数据
摘抄雷兄 http://blog.csdn.net/leixiaohua1020/article/details/46890259 /** * 最简单的SDL2播放音频的例子(SDL2播放PCM) * ...
- eclipse安装maven
maven3 安装: 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目, 首先去官网下载 Maven: 下载完成之后将其解压,解压后的文件夹重命 ...
- Unity3D 自定义事件(事件侦听与事件触发)
先来看下效果图,图中点击 Cube(EventDispatcher),Sphere(EventListener)以及 Capsule(EventListener)会做出相应的变化,例子中的对象相互之间 ...
- 从DataGridView导出Excel
从DataGridView导出Excel的两种情况,不多说,直接记录代码(新建类,直接引用传入参数). using System; using System.Collections.Generic; ...