Android开发框架Android-Sun-Framework
一. 写在前面
Android-Sun-Framework是一个Android组件化开发框架,可用于中大型项目。对应框架的一系列文章包含内容:设计思路、实现、如何使用等。我的宗旨是:授之以渔而不是授之以鱼! 同时我也感谢大家对我的支持。
欢迎Star or Follow我的GitHub
欢迎搜索微信公众号SamuelAndroid关注我,定期推送原创文章和代码。
系列文章:
Android开发框架Android-Sun-Framework(一)
Android开发框架Android-Sun-Framework(二)
Android开发框架Android-Sun-Framework(三)
以上两篇文章分享了网络,图片加载,推送等内容,今天给大家带了的是本框架最重要部分Hybrid的封装
近两年来混合开发越来越受欢迎,甚至让我们做原生开发感觉到了危机,这里不再讨论他的优越性。这么火的一个功能,我们的框架肯定要支持的。
框架介绍

该框架支持两种方式接入:SuperWebView, SuperWebFragment
接触过APICloud的童鞋都知道,他们只支持以Activity的形式,所以使用受限比较明显。我们这次的封装规避了他们的问题,是接入更加灵活,同时又参照了他们,做了一些相似的实现(当前只是把基础的且分钟重要的内容实现了,** 后面会参照APICloud的官方文档陆续增加,敬请期待**)
如何使用
我这里就不再说明底层是如何实现的,想了解这块的可以查看源码,或者关注我的微信公众号(搜索SamuelAndroid添加关注),给我留言!
-
导入
当前还没有发布到jcenter,需要手工导入,这里不再赘述,可以参照这篇文章 -
native封装的接口:
详细看下面的注释
// 发送数据
void sendDataToHtml5(String data);
//发送数据
void sendDataToHtml5(String data, CallBackFunction responseCallback);
//发送事件
void sendEventToHtml5(String handlerName);
//发送事件
void sendEventToHtml5(String handlerName, CallBackFunction callBack);
//发送事件
void sendEventToHtml5(String handlerName, String data, CallBackFunction callBack);
// 添加默认事件处理,即数据,对应于js的mobileAPI.send
setDefaultHtml5EventListener(new Html5EventListener() {
@Override
public void handler(String data, CallBackFunction function) {
if (function != null) {
function.onCallBack("孙华辉");
}
}
});
//监听H5发送的事件,对应H5的accessNative
addHtml5EventListener("eventname", new Html5EventListener() {
@Override
public void handler(String data, CallBackFunction function) {
function.onCallBack("submitFromWeb exe, response data 中文 from Java");
}
});
- H5的封装--注入完成
本框架会在HTML加载完成后动态注入一段js代码,框架里的一些方法只有等到注入完成后才能使用,为了让前段知道调用时机,我们把这个状态发送给了前端,有两种方式可以拿到注入完成的回调:
a. 通过事件:
document.addEventListener(
'onReady'
, function() {
//TODO
},
false
);
b. 通过回调:这里我多说两句,由于本人前端知识薄弱,这种方式的实现着实花了我一段时间,主要也是为了和APICloud具有同样的使用方式,所以这篇文章相隔上一篇时间较久。
appReady = function(){
// TODO
}
- H5的封装--生命周期(resume、pause)
做安卓开发的童鞋对于onResume,onPause这两个生命周期再熟悉不过,开发过程中我们会在onResume回调中做一些处理,所以本框架也将这两个生命周期传给了H5,具体使用方法如下:
appReady = function(){
...
resume = function(){
// TODO 可以这里加载数据
}
pause = function(){
// TODO
}
}
- H5的封装--事件
// 接收native发送过来的数据,对应native的sendDataToHtml5的处理
mobileAPI.init(function(message, responseCallback) {
responseCallback(data);
});
//监听native发送的事件
mobileAPI.addEventListener("functionInJs", function(data, responseCallback) {
responseCallback(responseData);
});
//发送数据到native
window.mobileAPI.send(
data
, function(responseData) {
document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
}
);
// 发送事件到native
window.mobileAPI.accessNative(
'submitFromWeb'
, {'param': '中文测试'}
, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
}
);
总结:
框架已经把最基础的实现了,后面只需要使用这些基础功能做一些封装就好了,后面会补一些常用的功能。项了解更多内容,建议大家还是静下心来撸一遍代码,来来让我们一起左手右手一个慢动作!!!