微信号:ardays

介绍:android每日绝对干货

5 个顶级 Android 开源库

2016-08-22 21:07 Android每日干货

1. Retrofit

    当涉及到实现 REST APIs 时,Retrofit 仍是我们的最爱。

    他们的网站上写着: “Retrofit 将 REST API 转换为 Java 接口。”是的,还有其他解决方案,但是 Retrofit 已经被证明是在一个项目中管理 API 调用最优雅、最方便的解决方案。使用注解添加请求方法和相对地址使得代码干净简单。

    通过注解,你可以轻松地添加请求体,操作 URL 或请求头并添加查询参数。

    为方法添加返回类型会使该方法同步执行,然而添加Callback(回调)会使之异步执行,完成后回调 success 或 failure 方法。


public interface RetrofitInterface {


    // 异步带回调

    @GET("/api/user")

    User getUser(@Query("user_id") int userId, Callback<User> callback);


    // 同步

    @POST("/api/user/register")

    User registerUser(@Body User user);

}



// 例子

RetrofitInterface retrofitInterface = new RestAdapter.Builder()

            .setEndpoint(API.API_URL).build().create(RetrofitInterface.class);


// 获取 id 为 2048 的用户

retrofitInterface.getUser(2048, new Callback<User>() {

    @Override

    public void success(User user, Response response) {


    }


    @Override

    public void failure(RetrofitError retrofitError) {


    }

});


    Retrofit 默认使用 Gson,所以不需要手动解析 JSON。当然其他的转换器也是支持的。

    现在 Retrofit 2.0 正在活跃地开发着,仍然是 beta,但你可以从这里获取到。从 Retrofit 1.9 开始,很多的东西都被砍了,也有一些重大的变化比如使用新的调用接口取代回调。


2. DBFlow

    如果你正准备在你的项目中存储任意复杂的数据,你应该使用 DBFlow。正如他们的 GitHub 上所说,这是“一个速度极快,功能强大,而且非常简单的 Android 数据库 ORM 库,为你编写数据库代码”。

    一些简单的栗子:

// Query a List

new Select().from(SomeTable.class).queryList();

new Select().from(SomeTable.class).where(conditions).queryList();


// Query Single Model

new Select().from(SomeTable.class).querySingle();

new Select().from(SomeTable.class).where(conditions).querySingle();


// Query a Table List and Cursor List

new Select().from(SomeTable.class).where(conditions).queryTableList();

new Select().from(SomeTable.class).where(conditions).queryCursorList();


// SELECT methods

new Select().distinct().from(table).queryList();

new Select().all().from(table).queryList();

new Select().avg(SomeTable$Table.SALARY).from(SomeTable.class).queryList();

new Select().method(SomeTable$Table.SALARY, "MAX").from(SomeTable.class).queryList();


    DBFlow 是一个不错的 ORM,这将消除大量用于处理数据库的样板代码。虽然 Android 也有其他的 ORM 方案,但对我们来说 DBFlow 已被证明是最好的解决方案。


3. Glide

    Glide 是一个用于加载图片的库。当前备选方案有 Universal,Image LoaderPicasso;但是,以我来看,Glide 是当前的最佳选择。

    下面是一个简单的例子,关于如何使用 Glide 从 URL 加载图片到 ImageView。

ImageView imageView = (ImageView) findViewById(R.id.my_image_view);

Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);


4. Butterknife

    一个用于将 Android 视图绑定到属性和方法的库(例如,绑定一个 view 的 OnClick 事件到一个方法)。较之前版本而言,基本功能没有变化,但可选项增加了。栗子:

class ExampleActivity extends Activity {

  @Bind(R.id.title) TextView title;

  @Bind(R.id.subtitle) TextView subtitle;

  @Bind(R.id.footer) TextView footer;


  @Override public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.simple_activity);

    ButterKnife.bind(this);

    // TODO Use fields...

  }

}


5. Dagger 2

    自从我们迁移到 MVP 架构,我们就开始了广泛使用依赖注入。Dagger 2 是著名的依赖注入库 Dagger 的继承者,我们强烈推荐它。

    一个主要的改进就是生成的注入代码不再依赖反射,这使得调试容易了许多。

    Dagger 为您创建类的实例,并满足他们的依赖。这依赖于 javax.inject.Inject 注解,以确定哪些构造函数或字段应被视为依赖。以著名的咖啡机(CoffeeMaker)为例:

    译者注:Dagger 和 Dagger 2 的官方文档里都是使用这个例子,所以著名…


class Thermosiphon implements Pump {

  private final Heater heater;


  @Inject

  Thermosiphon(Heater heater) {

    this.heater = heater;

  }


  ...

}


直接注入到字段的栗子:

class CoffeeMaker {

  @Inject Heater heater;

  @Inject Pump pump;


  ...

}


通过 modules 和 @Proivides 注解提供依赖(Dependencies):

@Module

class DripCoffeeModule {

  @Provides Heater provideHeater() {

    return new ElectricHeater();

  }


  @Provides Pump providePump(Thermosiphon pump) {

    return pump;

  }

}


  今天的干货就到这里了,每天有各种干货等着你.各种实用的Demo等着你下载。喜欢的用户可以长按下图的二维码进行关注哦.


 
Android每日干货 更多文章 模仿荷包启动动画 android日常开发总结的技术经验60条 还在用Android自带的WebView组件?太Out了! Activity切换淡入淡出效果 想要视频,demo的小伙伴看这里啊~
猜您喜欢 深入理解计算机系统9个重点笔记 前端程序员为什么应该拿高薪 当传统银行嫁接互联网思维,看这家银行怎样做到“用户至上” 假如你想成为全栈工程师,首先… 程序员,你能真正掌握多少编程技术?