Android中,如何在其他类调用Activity的方法,适用于类似场景

Android中,如何在其他类调用Activity的方法,适用于类似场景

其他类以下简称B类

一. 借助Handler(优点可以传递数据)
1).Activity调用其他类(B类)的时候 传入Handler
B mB = new B(getApplicationContext(), mHandler);
2).在B类 需要调用Activity内方法的地方,调用mHandler.sendEmptyMessage(int what);
3). Activity的 Handler的handleMessage()中 设置与B类相对应的msg.what 并在其中调用需要调用的Activity方法
private Handler mHandler = new Handler() {
@SuppressWarnings(“unchecked”)
public void handleMessage(android.os.Message msg) {
if (msg.what == 0x001) {
// 相关需要调用的方法
}
}
}
……………………………………………………………………………….
二. 使用接口回调方式
B类属于调用方(定义接口) Activity属于实现方(具体方法在Activity中实现)
1). 在B类 定义好接口,并定义好调用方传入接口对象的方法
Class B{
/* 全局接口对象引用 /
private iNetFail mNetFail;
/* 定义好接口 /
public interface iNetFail {
public void netFall();
}
/* 设置接口对象 给实现方设置 /
public void setNetFail(iNetFail mNetFail) {
this.mNetFail = mNetFail;
}
}
2).在Activity 中实现该接口,在其自动复写的方法中 实现需要的代码
public void netFall() {
/* 实现需要的代码 /
}
3). 在Activity中 初始化B类之后 ,调用B类的回调接口
B mB = new B();
mB.setNetFail(this); // 因为已经实现该接口,所以直接this即可
……………………………………………………………………………….
三. 使用JAVA 反射机制(反射对性能消耗略大,请谨慎使用)
1. 获取需要调用类(这里是Activity)的实例
Activity mActivity = FindacureActivity.getActivity();
……………………………………….
private static Activity mActivity;
在orCreate里面 mActivity = this;
public static Activity getActivity(){
return mActivity;
}
获取Activity实例的方法
……………………………………….

2.通过getClass() 获取该类
Class FindClass = mActivity.getClass();
3.通过类.getMethod(“方法名”,参数列表); // 不一定使用getMethod(…,…)
Method m = FindClass.getMethod(“netFall”, null);
4.通过Method对象调用invoke(类的对象,参数列表);
m.invoke(mActivity, null);
……………………………………………………………………………….
4)使用静态方法 供外界直接调用
ps:静态方法内,使用的所有对象都要求是静态的

根据实际需要选择最适合的方法哟!

联系作者:Email:[email protected]
QQ:1056816512

你可能感兴趣的:(android开发)