热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

SimpleCommand框架介绍以及简单使用(一)

这篇文章主要为大家详细介绍了SimpleCommand框架以及简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

简介:

SimpleCommand是一款轻量级框架。框架很小也很容易理解。使用这款框架能实现的功能主要是快速集成网络请求、图片请求、文件操作等各种比较耗时的操作。对于网络图图片请求,内部使用的是OkHttp实现

使用场景:

此框架并不适合于短时间内有大量请求的场景,比较适合于并发执行4~6个异步请求

工程目录介绍:

在SimpleCommand整个工程目录下,有三个比较重要的module:app、sample、simplecommand

simplecommand:

这个是最重要的一个依赖module,所有核心功能都是在此module种完成的。主要包括以下几个核心类:

Command:这个类是所有Command执行者的父类。其中包含3个主要的核心方法:
start–此方法会启动CommandService服务,并在子线程中执行耗时操作
execute–在CommandService中回调到的方法,一般将耗时操作放在此方法中执行
notifuListeners–通知所有的ResultListener

app:

在app module里主要是做演示功能。通过module dependency依赖到了simplecommand module。然后自定义NetworkCommand实现请求网络数据并显示到UI界面

sample:

是一个比较完整的案例演示module。通过添加simplecommand.aar包实现网络请求功能。具体的使用方法请继续往下看!

使用步骤:以下步骤是以网络请求功能作为演示Demo

1 在新建的app module中新建libs文件夹,并将sample的libs中的simplecommand.aar拷贝到此libs文件夹下

2 在你自己新建的app module的build.gragle中的android块中添加如下语句:

repositories {
 flatDir {
  dir 'libs' //注意:需要提前在app module中创建出libs文件夹
 }
}

3 在app module的build.gradle的dependencies中添加如下依赖:

compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
compile (name: 'simplecommand', ext: 'aar')

4 新建HumourCommand(类名可以自己根据业务随便取), 并集成NetworkCommand类,具体代码如下:

package com.danny_mcoy.commandlibdemo;

import android.content.Context;
import android.net.Uri;
import android.os.Parcel;

import com.danny_mcoy.simplecommad.cmd.network.NetworkCommand;
import com.danny_mcoy.simplecommad.log.Logger;
import com.squareup.okhttp.Request;

/**
 * Created by Danny_姜新星 on 3/8/2017.
 */

public class HumourCommand extends NetworkCommand {

 @Override
 protected String buildUrl(Context context) {
  Uri.Builder builder = Uri.parse("http://api.laifudao.com")
    .buildUpon();
  builder.appendEncodedPath("open/xiaohua.json");
  Logger.e("JIANG", "url is " + builder.toString());

  return builder.toString();
 }

 @Override
 protected Request getRequest(String url) {
  return new Request.Builder()
    .url(url)
    .build();
 }

 public static final Creator CREATOR = new Creator() {
  @Override
  public HumourCommand createFromParcel(Parcel source) {
   return new HumourCommand();
  }

  @Override
  public HumourCommand[] newArray(int size) {
   return new HumourCommand[size];
  }
 };

}

5 HumourCommand创建好之后, 就可以在MainActivity中使用了,通过实现一个Button的点击事件btnClick开始 :

package com.danny_mcoy.commandlibdemo;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.danny_mcoy.simplecommad.extra.Params;
import com.danny_mcoy.simplecommad.log.Logger;
import com.danny_mcoy.simplecommad.receiver.AppResultReceiver;

public class MainActivity extends AppCompatActivity implements AppResultReceiver.ResultListener {

 private TextView textView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 textView = ((TextView) findViewById(R.id.text_Main));
 }

 public void btnClick(View view) {
 HumourCommand apiCommand = new HumourCommand();

 AppResultReceiver receiver = new AppResultReceiver(new Handler(), this);

 apiCommand.start(this, receiver);
 }

 @Override
 public void onResultSuccess(Bundle resultData) {
 if (null != resultData) {
  String body = resultData.getString(Params.CommandMessage.EXTRA_BODY);

  Logger.e("JIANG", " body is " + body);

  textView.setText(body);
 }
 }

 @Override
 public void onResultFailed(Bundle resultData) {
 Logger.e("JIANG", " failed");
 }

 @Override
 public void onResultProgress(Bundle resultData) {
 Logger.e("JIANG", " progress");
 }
}

简单说明以下:AppResultReceiver是一个请求结果接收器, 当我们调XXXCommand.start方法时,需要传入一个AppResultReceiver。当请求结果返回之后,就会调用AppResultReceiver中的listener相应方法:onResultSuccess、onResultFailed等等

框架github地址: SimpleCommand框架

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • github上_idea上传本地项目到github上(图解)
    本文由编程笔记#小编为大家整理,主要介绍了idea上传本地项目到github上(图解)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了一些Java开发项目管理工具及其配置教程,包括团队协同工具worktil,版本管理工具GitLab,自动化构建工具Jenkins,项目管理工具Maven和Maven私服Nexus,以及Mybatis的安装和代码自动生成工具。提供了相关链接供读者参考。 ... [详细]
author-avatar
mobiledu2502917123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有