Android学习笔记_74_Android回调函数触发的几种方式 广播 静态对象
一、通过广播方式:
1、比如登录。假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象传入即可。但是在Activity中不能传递监听对象,所以考虑使用广播来实现。
public void login(final LoginOnClickListener listener) {
Intent intent = new Intent(context, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
listener.handleLogin(true, "receiver .. BroadcastReceiver .. ");
}
};
IntentFilter intentFilter = new IntentFilter("android.intent.action.MAIN");
context.registerReceiver(mReceiver, intentFilter);
context.startActivity(intent);
}
2、在LoginActivity类中登录成功之后,发送一个广播通知登录成功。
Intent intent = new Intent("android.intent.action.MAIN");
sendBroadcast(intent);
参考:http://buddie.iteye.com/blog/977352
二、通过静态对象:
我在做项目时遇到一个问题,第三方调用的SDK,我的sdk里面有一个登录方法,在登录方法里面又启动一个sdk里面的登录界面,用户登录成功之后,怎样通知登录方法即第三方。后来想到了广播,如第一种方式是可以的。
后来看到别人代码中采用静态对象,然后我试了以下这种方式也可以。因为静态对象不管所在类创建多少个对象,它都是不变的。下面是具体实现:
public class SDKLibPlatform {
private Activity context;
private SDKLibPlatform() {
}
private static SDKLibPlatform platform = new SDKLibPlatform(); public static SDKLibPlatform getInstance() {
if (platform == null) {
return new SDKLibPlatform();
}
return platform;
} public static Callback listener;
/**
* 登录方法
*
* @param listener
* 回调函数
*/
public void login(Callback callback) {
//将这个回调函数保存在listener对象上
listener = callback;
Intent intent = new Intent(context, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//启动activity
context.startActivity(intent);
}
SDKLibPlatform.listener.handle(false, "login ....... ");
public interface Callback {
public void handle(boolean status, String message);
}
}
启动LoginActivity之后,在用户登录成功或者失败是调用 listener 对象的handle方法,从而可以通知到第三方。
if (code==1) { //登录成功
SDKLibPlatform.listener.handle(true, "login success ....... ");
}else {
SDKLibPlatform.listener.handle(false, "login false ....... ");
}
第三方调用的代码:
SDKLibPlatform.getInstance().login(new Callback(){
@Override
public void handle(boolean status,String message) {
System.out.println(status+" -====================> "+message);
}
});
Android学习笔记_74_Android回调函数触发的几种方式 广播 静态对象的更多相关文章
- 十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象
一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- react学习笔记1之声明组件的两种方式
//定义组件有两种方式,函数和类 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } class ...
- Android学习笔记基于回调的事件处理
流程: 常见的回调方法: 代码示例: @Override public boolean onTouchEvent(MotionEvent event) { Toast.makeText(getAppl ...
- Qt学习笔记----信号与槽实现的四种方式
1.以按钮为例,首先添加一个按钮,对象名为pushButton,在按钮是右键单击选择“转到槽”即可,在转到槽选择面板(右图)里面选择需要进行的操作,比如单击clicked() 2.选择菜单“编辑”,找 ...
- angular学习笔记(三)-视图绑定数据的两种方式
绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...
- 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们有一篇很好的博文<Andro ...
随机推荐
- Android中改变Activity的不同icon:activity-alias
Android设置title中的Icon有几种方法,介绍如下: 一种是直接在AndroidManifest.xml文件中设置android:icon属性,这种方法简单有效,应该算是我们最常用的设置Ic ...
- lua输入函数名字符串执行函数
str = "testA()"loadstring(str)() function testA() ------end 使用loadstring即可执行后面在xlua用了下发现不能 ...
- 《X86汇编语言:从实模式到保护模式》读书笔记之引言
有幸结识了<X86汇编语言:从实模式到保护模式>一书.我觉得这本书非常好,语言活泼,通俗易懂,源码丰富,受益匪浅.读罢一遍,意犹未尽.于是打算再读一遍,并把自己的读书所学总结成笔记,一来给 ...
- flex buider 4.6 打开设计模式(designer)时提示内存不足错误的解决办法
先申明,此方法只适用于flex builder 4.6及以下版本, flex builder 4.7以后已经完全取消了designer功能,是没有办法补救的. 1. 首先下载APE文件,这个文件好像是 ...
- IE7不兼容slideDown()
IE7下,使用slideDown()方法,可能出现以下两种问题: 一.下拉动画变形,最终定格时正常 二.下拉动画正常,最终定格时消失
- PowerDesigner从SqlServer数据库导入数据模型
Powerdesigner 从数据库导入数据 第一步, 打开 powerdesigner, 在菜单选择 [File] 选项, 然后在弹出的下拉单中选择 [Reverse Engineer]选项,再选择 ...
- 项目搭建系列之四:SpringMVC框架下使用UrlRewrite实现地址重写
简单记录一下UrlRewrite实现地址重写功能. 1.pom.xml 在pom.xml增加配置UrlRewrite jar <!-- URL Rewrite --> <depend ...
- 【tomcat】关于tomcat的使用:将tomcat加入系统服务列表
一.下载TOMCAT 选择合适的版本进行下载: http://tomcat.apache.org/ 解压zip文件得到tomcat目录: 二.添加CATALINA_HOME到环境变量 service. ...
- sublime开启vi编辑器功能,与vi常用快捷键
sublime开启vi编辑器 install package -> vintageES 设置里面 ignored_packages 里面的vintage去掉 VI命令 游标控制 h 游标向左移 ...
- 【Spring Boot】集成Netty Socket.IO通讯框架
服务端 @Configuration public class NettySocketConfig { private static final Logger logger = LoggerFacto ...