博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apklug插件托管服务开发教程之按条件查询云端插件-01
阅读量:6582 次
发布时间:2019-06-24

本文共 2656 字,大约阅读时间需要 8 分钟。

hot3.png

注:本文是基于托管服务TuoCloudService1.0.0讲解的 项目地址为

 

一,插件托管服务支持的功能

      v1.0.0支持的功能如下:

        注:它们都是以OSGI服务对外提供服务的,关于OSGI可百度查询,但同时我们提供模板代码,我们希望大家可以利用模板代码渐进式的学习  <>

        1.插件托管:

            开发者可将宿主应用与插件上传到服务器上,并随意绑定宿主与插件的对应关系。

        2.客户端多条件查询: 

            OSGI服务名:"com.apkplug.service.SearchApp.appSearch"

            目前支持的插件查询条件有 插件名(appname) 设置的关键词(b_keywords) 可按插件添加日期排序

            注:插件必须与宿主绑定才可被查询到

        3.插件版本状态查询:

            OSGI服务名:com.apkplug.service.update.checkupdate

           可批量查询该宿主对应的插件版本状态

        4.插件文件下载:

            OSGI服务名:"com.apkplug.service.download.AppDownload"

            通过查询(2)或插件版本更新功能(3)可获取appBean,通过它可下载插件文件。

二,宿主应用集成插件托管服务

    1)插件托管服务是一个jar包我们只需要将其放置于宿主文件夹的libs目录中即可。如图

    

    2)将插件托管的OSGI服务注册到apkplug框架中

      详细代码在 com.apkplug.cloudservicedemo.ProxyApplication 类中  

try{     //com.apkplug.appServiceManager 为TuoCloudService1.0.0.jar包提供的插件托管服务启动BundleActivator     List activators=new java.util.ArrayList
(); //将服务加入框架,框架将在启动时启动这些服务 activators.add(new appServiceManager()); frame=FrameworkFactory.getInstance().start(activators,this,new MyProperty(this.getApplicationContext())); }catch (Exception ex){ System.err.println("Could not create : " + ex); ex.printStackTrace(); int nPid = android.os.Process.myPid(); android.os.Process.killProcess(nPid);}

三, 使用插件托管服务接口查询

    上一步我们将托管服务已经全部注册到apkplug框架里面了,所以当使用时只需要找到服务,如下为模板代码:

    注:代码位置  com.apkplug.cloudservicedemo.activity.SearchActivity

/*** appSearch 插件搜索服务* @param context  插件上下文* @param bean     查询条件填充 bean* @param callback 查询结果回调接口*/public void search(BundleContext context,appSearchBean bean,AppSearchCallBack callback){    ServiceReference reference=context.getServiceReference(appSearch.class.getName());    if(null!=reference){    	appSearch service=(appSearch)context.getService(reference);    	if(service!=null){    		service.search(bean,callback);    	}    	context.ungetService(reference);    } }

    以上有两个需要我们填充

    appSearchBean bean 是插件条件bean ,我们可以通过填充它来设置一些查询条件

    AppSearchCallBack callback 查询过程或结果将通过该接口返回

  

public void updataDate(BundleContext context){    bean=new appSearchBean();    //按插件被添加到分组(宿主)的时间逆序查询     bean.setG_order(appSearchBean.order_desc);    //插件的关键词keyword    bean.setB_keywords("工具");    bean.setPagenum(10);    bean.setPage(0);    //查询     search(context,bean,new impAppSearchCallBack());}
class impAppSearchCallBack implements AppSearchCallBack{	public void onFailure(int arg0, final String arg1) {		//服务查询失败	}	public void onSuccess(int stutas, CallBackMSG msg,appSearchBean arg2) {		//服务查询成功         		if(stutas>=0){			if(msg.getStutes()>=0){				//查询正确				//获取查询到的插件				List
aps=(List)msg.getMsg(); }else{ //查询条件异常 } }else{ //网络异常 } } }

注:查询完成后返回的appSearchBean arg2可以获取到该条件下服务端插件总体数量以及当前返回

转载于:https://my.oschina.net/u/138488/blog/267533

你可能感兴趣的文章
Spring cloud配置客户端
查看>>
产品研发项目管理软件哪个好?
查看>>
【阿里云北京峰会】一图看懂机器学习PAI如何帮助企业应用智能化升级
查看>>
ansible playbook使用总结
查看>>
Android API中文文档(111) —— MailTo
查看>>
Linux 中如何卸载已安装的软件
查看>>
thinkphp 3.2 增加每页显示条数
查看>>
oracle日常简单数据备份与还原
查看>>
我的友情链接
查看>>
黑马程序员__反射总结
查看>>
Scala学习笔记(5)-类和方法
查看>>
Quartz原理
查看>>
完全卸载oracle|oracle卸载|彻底卸载oracle
查看>>
垃圾收集基础
查看>>
Docker安装及基本命令
查看>>
控制namenode检查点发生的频率
查看>>
Linux存储挂载后,无法正常卸载的解决方法
查看>>
2、递归遍历文件夹下每一个文件
查看>>
Remove auto_increment from Schema Dumps (mysqld...
查看>>
解决activity加上Theme.Translucent.NoTitleBar 页面跳转显示桌面
查看>>