介绍
众所周知,诸多App本身会提供给其他App一个jar包来集成,获得当前状态。关于生成jar给别人调用的方法,即封装SDK,在此文中做个简单示例:
1、定义初始化类
public class SdkInit {
private static SdkInit mSdkInit = new SdkInit();
private static IStatus mStatus = null;
private static String Action_Test_Status = "com.test.Action_Test_Status";
private static BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 接收发过来的信息
int mStatusValue = intent.getIntExtra("status", -1);
// 回调数据给监听对象
mStatus.onStatus(mStatusValue);
}
};
/**
* 注册监听
*
* @param status
* 监听对象
*/
public static void registerStatusListener(Context context, IStatus status) {
if (status != null) {
mStatus = status;
IntentFilter intentFilter = new IntentFilter(Action_Test_Status);
context.registerReceiver(receiver, intentFilter);
}
}
/***
* 注销监听
* @param context
*/
public static void unRegisterStatusListener(Context context) {
if (receiver != null) {
context.unregisterReceiver(receiver);
}
}
}
2、定义状态接口类
public interface IStatus {
public void onStatus(int status);
}
3、使用方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注册
SdkInit.registerStatusListener(getApplicationContext(), new IStatus() {
@Override
public void onStatus(int status) {
// TODO Auto-generated method stub
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
SdkInit.unRegisterStatusListener(getApplicationContext());
}
}
4、原理:这种传递数据方法其实就是监听一个写好action的广播接收者,主方往外发送带信息的action的广播,客方广播接收器接收信息,并把信息回调给IStatus对象。
在onCreate中注册消息监听,onDestroy中注销监听,以免内存泄漏。