/shorty

a android frame

Primary LanguageJava

shorty是一个快速APP开发的工具套装,能快速的让app拥有http,数据库,事件总线,log工具,ui模板化等基本功能。并能无缝的接入其他继承了 BaseManager 的工具模块。 基本模块介绍:

1、UI模板基类BaseActivity
  提供公用跳转方法redirect,插件模块获得方法getManager(Class<? extents BaseManager>),eventBus生命周期限制(自动销毁event防止activity生命周期外调用View造成闪退)

2、Http模块
  a、如果Activty继承BaseActivity(UI模板基类)

    HttpManager httpManager = getManager(HttpManager.class);
    HttpAction action = new HttpAction("http://apis.baidu.com/apistore/aqiservice/aqi", HttpAction.GET,Class<?extents BaseParse>);
    
    Class<?extents BaseParse> 是自定义解析器的基类,不填第三个参数使用默认JsonParse
    
    action.putParam("city", "xx");   //设置参数
    action.setHeader("apikey", "xxxxxxx"); //设置header
    action.setHttpActionListener(new HttpActionListener<TestEntry>() {   //TestEntry是经过解析器后得到对象
        @Override
        public void onSuccess(JSONObject result) {  //成功,返回数据对象}                      
        @Override
        public void onFailure(int resultCode, String error) { //失败,返回错误和代码}
    });
    httpManager.submit(action);

  b、如果Activty没有继承BaseActivity(UI模板基类)

      HttpManager httpManager = (HttpManager) ManagerFactory.getInstance().getManager(HttpManager.class);</br>
      HttpAction action = new HttpAction("http://apis.baidu.com/apistore/aqiservice/aqi", HttpAction.GET);</br>
      httpManager.submit(action);

3、数据库模块
设置生成表

  @DatabaseTable(tableName = "t_account")
  public class TestEntry extends BaseEntry {
    @DatabaseField(columnName = "ks")
    public String ks;

    @DatabaseField(columnName = COLUMN_USER_NAME, unioueIndex = true)  //unioueIndex标记为索引,当这个标记为ture时有相同的save为替代
    public String userName;
  }
  
  在Application中创建下表,如果已经创建会自动跳过,否则会创建

  DaoManager daoManager = (DaoManager) ManagerFactory.getInstance().getManager(DaoManager.class);
  daoManager.createTable(TestEntry.class);

  操作数据插入和更新都是
  
  daoManager.save(testEntry);

  其他查询,删除的也都在daoManager中

4、evnetBus a、evnetBus是一个简单化的事件驱动模块,能够设置接收到事件后的运行线程

  eventManager = getManager(EventManager.class);
  eventManager.addEventListener("test", new EventListener() {   //注册事件 test为事件关键字  
          @Override
          @Subscribe(threadLevel = Subscribe.DEFAULT, oneTime = true)
          public void onEvent(Object event) {
          }
          @Override
          public void onFailed(int code, String error) {
          }
    });

    eventManager.sendEvent("test", "xxxxx");  //激活事件
    
threadLevel 定义:
/**
 * 在当前线程处理结果
 */
int DEFAULT = 0;
/**
 * 在主线程处理结果
 */
int MAIN_THREAD = 1;
/**
 * 当前为主线程线另开程处理结果,否则在当前线程处理
 */
int BACKGROUND_THREAD = 2;
/**
 * 新开线程处理结果
 */
int ASYNC_THREAD = 3;

oneTime定义是否为一次性事件,默认为是,激活一次后失效

b、设置event与BaseActivity同生命周期
  创建EventListenerh时使用BaseActivity标记绑定生命周期的事件监听即可,finish时会自动删除监听

  new EventListener(getContextHash());

需要使用新的插件时可以新开model然后集成BaseManager,能直接被ManagerFactory获得,方便创建管理