Топ 5 Android-библиотек, о которых должен знать каждый Android-разработчик

Вот подборка из пяти наших любимых библиотек.

1. GSON

Gson это Java-библиотека, использующаяся для сериализации и десериализации Java-объектов из и в JSON. Эта задача часто возникает, если вы общаетесь с API. Мы в основном, используем JSON, потому что он легче и гораздо проще, чем XML.




// Сериализация 
String userJSON = new Gson().toJson(user);

// Десериализация 
User user = new Gson().fromJson(userJSON, User.class);

Он также хорошо сочетается со следующей библиотекой:

2. RETROFIT

Цитата их сайта: «Retrofit превращает ваш REST API в Java интерфейс.» Это элегантное решение для взаимодействия приложения с API. Методы запроса и относительный URL-адрес добавляется с помощью аннотаций. Благодаря этому код становится чище и проще.

С аннотациями, вы можете легко добавить тело запроса, манипулировать URL-адресами или заголовками, а также добавлять параметры запроса.




Добавление возвращаемого типа к методу делает запрос синхронным, а  при добавлении Callback’а метод станет  асинхронным.

ublic interface RetrofitInterface {

    // асинхронный с callback'ом
    @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) {

    }
});

 

Для десериализации JSON Retrofit по умолчанию использует  gson, поэтому нет необходимости разбирать его вручную. Другими конвертеры также поддерживаются.

3. EVENTBUS

EventBus это библиотека, которая упрощает связь между различными частями вашего приложения. Например, можно отправить что-нибудь от Activity в запущенный Service, или организовать легкое взаимодействия между фрагментами. Вот пример кода, который мы используем, если подключение к Интернету обрывается, показывающий соответствующее уведомление в 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)) {
                // no Internet connection, send network state changed
                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); // register EventBus
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this); // unregister EventBus
    }

    // метод, который вызывается, когда отправляется одно из событий NetworkStateChanged
    public void onEventMainThread(NetworkStateChanged event) {
        if (!event.isInternetConnected()) {
            Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();
        }
    }

}

4. ACTIVEANDROID

ActiveAndroid это ORM для Android. Это абстракции на SQLite, которая позволяет вам общаться с базой данных на устройстве без необходимости написания SQL-запросов.Объект, который наследуется от ActiveAndroid Model может быть сохранен в базе данных вот так:

user.save();

вместо большого SQL запроса, как этот:

INSERT INTO Users (Nickname, Name, Address, City, PostalCode, Country) VALUES ('Batman','Bruce W','Palisades 21','Gotham','40000','USA');

Пример получения всех пользователей:

List<User> users = new Select().from(User.class).execute();

в SQL данный запрос будет выглядеть следующим образом:

SELECT Nickname, Name, Address, City, PostalCode, Country FROM Users;

ActiveAndroid это хороший способ, чтобы удалить много шаблонного кода, используемого для работы с базами данных. Есть и другие решения с открытым исходным кодом, такие как GreenDAO и ORMLite.




5. UNIVERSAL IMAGE LOADER

UIL — это библиотека, которая предоставляет асинхронную загрузку и кэширование изображений «из коробки». Она довольно проста в использовании:

imageLoader.displayImage(imageUri, imageView);

Хотя Picasso имеет более приятный интерфейс, ему не хватает гибкости. В UIL можно настроить практически все (это важно при загрузке и кэшировании действительно больших изображений, с которыми Picasso не справляется).

Источник: Top 5 Android libraries every Android developer should know about.

Комментарии:

1 Comment

  1. Pingback: ic218 » Полезные ссылки для Android разработчика

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *