过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库。希望通过对它们的了解,能够对你的开发工作有所帮助。

1. GSON Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可用于将Java对象转换成对应的JSON表示,也可以将JSON字符串转换成一个等效的Java对象。如果与API打交道的话,那么这将会是你经常需要的东西。我们主要使用JSON的原因就是,相较XML,轻量级的JSON要简单的多。 -
- String userJSON = new Gson().toJson(user);
-
-
- User user = new Gson().fromJson(userJSON, User.class);
2. RETROFIT 就如它网站上的介绍“Retrofit将你的REST API变为Java接口”一样,Retrofit把REST API返回的数据转化为Java对象方便操作,对于在项目中组织API调用,是一个不错的解决方案。其请求方法和相对URL都带有注解,使得代码变得更加简洁。使用注解,你可以很容易的添加一个请求主体,操纵URL或头文件,并添加查询参数。除此之外,每个函数可以定义为同步或异步,具有返回值的函数为同步执行,而异步函数没有返回值且最后一个参数为Callback对象。 - 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()
- .setServer(API.API_URL).build().create(RetrofitInterface.class);
-
-
- retrofitInterface.getUser(2048, new Callback<User>() {
- @Override
- public void success(User user, Response response) {
-
- }
-
- @Override
- public void failure(RetrofitError retrofitError) {
-
- }
- });
Retrofit默认情况下使用的是GSON,所以无需自定义解析,同时还支持其他转换器。
3. EVENTBUS EventBus是用于简化应用中各个部件之间通信的一个库。比如从一个Activity发送消息到一个正在运行的服务,亦或是片段之间简单的互动。而下面使用的示例,就是如果网络连接丢失,该如何通知一个活动: - public class NetworkStateReceiver extends BroadcastReceiver {
-
-
- public void onReceive(Context context, Intent intent) {
- super.onReceive(context, intent);
- if(intent.getExtras()!=null) {
- NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
- if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
-
- } else if(intent
- .getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
-
- EventBus.getDefault().post(new NetworkStateChanged(false));
- }
- }
-
-
- public class NetworkStateChanged {
-
- private mIsInternetConnected;
-
- public NetworkStateChanged(boolean isInternetConnected) {
- this.mIsInternetConnected = isInternetConnected;
- }
-
- public boolean isInternetConnected() {
- return this.mIsInternetConnected;
- }
- }
-
- public class HomeActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- EventBus.getDefault().register(this);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- EventBus.getDefault().unregister(this);
- }
-
-
- public void onEventMainThread(NetworkStateChanged event) {
- if (!event.isInternetConnected()) {
- Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();
- }
- }
-
- }
|