Самая популярная в мире мобильная ОС — от телефонов и часов до автомобилей и телевизоров.

Добро пожаловать в серию статей Изучаем Android. Здесь я объясню вам почему мир программирования для Android, а не просто как, чтобы помочь вам понять суть программирования для Android. Я поделюсь с вами объяснениями и фрагментами кода о том, как реализовать самые простые вещи в Android.

В предыдущей статье мы узнали, как визуально улучшить наше приложение, добавив настраиваемые представления, такие как Панель инструментов и меню. Мы узнаем об этом больше, когда продолжим. Но в этой статье мы узнаем, как мы можем подключить наше приложение к Интернету.

Предыдущая статья →



Зачем нам нужно знать, как подключить наше приложение к Интернету? Потому что именно через Интернет мы можем подключаться к миллионам пользователей по всему миру и отвечать в режиме реального времени. Мы загружаем данные с удаленных серверов в наше приложение из Интернета.

Прежде всего, чтобы подключиться к Интернету, нам нужно добавить разрешения в наше приложение, чтобы сообщить ОС Android, что мы будем использовать Интернет. Эти разрешения добавляются в файл Manifest.xml.

Что представляет собой файл манифеста и что он содержит?
Манифест содержит мета информацию (данные о данных). сильный>). Сюда входит информация об упакованных файлах. Это содержит -

  1. Имя пакета приложения, которое было сгенерировано, когда мы ввели необходимые данные.
  2. Компоненты приложения, то есть информация о действиях, фильтрах намерений, службах, широковещательных приемниках и многом другом.
  3. Разрешения — необходимые нашему приложению для доступа к защищенным частям системы и другим приложениям. Он требует, чтобы разработчики запрашивали доступ, а пользователи предоставляли доступ к частям системы Android.
  4. Аппаратные и программные функции приложения — влияющие на то, какие устройства могут загружать наше приложение. Эти функции включают размеры экрана и т. д.

Большинство приложений Android используют HTTP-клиент для отправки данных по сети. По умолчанию Android поставляется вместе с классом HttpURLConnection. Но есть много библиотек с открытым исходным кодом, которые обеспечивают более высокую производительность, чем вышеупомянутый класс, и их можно найти с помощью простого поиска в Google для сетевых библиотек Android. Для нетворкинга нам нужно ввести новую концепцию —

Многопоточность.

Многопоточность относится к процессу запуска нескольких потоков одновременно или параллельно. Потоки — это упрощенные подпроцессы, которые совместно используют общую область памяти. Это позволяет быстро переключаться между ними и использовать меньше памяти, чем реализация полностью новых процессов.

Основное преимущество заключается в том, что он не блокирует любую операцию, которую выполняет пользователь. Это обеспечивает бесшовный пользовательский интерфейс. А поскольку мы выполняем несколько операций одновременно, это экономит время для пользователя и приложения. Так зачем многопоточность для приложений Android? Так как -

Сетевые операции всегда должны выполняться в отдельном потоке.

Таким образом, мы можем избежать создания неотзывчивого пользовательского интерфейса, из-за которого приложение кажется глючным. Мы должны выполнять сетевые операции в другом потоке, иначе ОС Android выдаст NetworkOnMainThreadException. Основной поток по умолчанию — это поток пользовательского интерфейса, в котором выполняются основные операции.

Для выполнения сетевых операций существует встроенный класс под названием AsyncTask, который используется для запуска сетевых операций в фоновом потоке. Мы создаем и реализуем подкласс AsyncTask. Давайте посмотрим, как будет выглядеть подкласс —

private class MyAsyncTask extends AsyncTask<Params, Progress, Result> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Result doInBackground(Params... params) {
        return null;
    }

    @Override
    protected void onPostExecute(Result result) {
        super.onPostExecute(result);
    }
}

Класс AsyncTask принимает 3 параметра — Params, Progress и Result. Все параметры являются непримитивными по своей природе. Если мы не хотим передавать какой-либо параметр, мы можем передать тип данных «Void», чтобы указать нулевые значения.

Кроме того, мы должны переопределить метод doInBackground() и реализовать весь код сетевых операций внутри этого метода. Два других метода — onPreExecute() и onPostExecute() — могут быть реализованы по мере необходимости.

Как следует из названий, метод onPreExecute() выполняется до выполнения фоновой операции, а метод onPostExecute() — после выполнения фоновой операции. В большинстве случаев эти методы используются для инициализации, установки и обновления переменных хранения и прогресса.

В методе doInBackground() мы видим другой синтаксис для параметра с типом данных, 3 точками, а затем имя переменной. Три точки означают, что мы можем передавать любое количество параметров, фактически не определяя их число заранее. Они хранятся в массиве, и мы можем получить к ним доступ, используя порядковый номер массивов. Это помогает нам в случае, когда нам нужно передать, например, более одного URL.

Кроме того, перед выполнением сетевой операции нам необходимо проверить, подключено ли устройство к Интернету. Именно поэтому мы включили разрешение Доступ к состоянию сети в файл Манифеста. У нас также есть встроенные классы для проверки состояния сети. Давайте посмотрим, как мы можем проверить подключение —

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
    //Perform the network operations since it is connected. Call the created AsyncTask and perform execute operation.
} else { 
    //We do not have network connectivity, implement notifying the users and updating progress variables.
}

Таким образом, мы можем легко подключиться к Интернету. Мы узнаем больше о том, как извлекать данные из Интернета, и изучим некоторые еще лучшие библиотеки — с открытым исходным кодом и встроенные — по сравнению с AsyncTask, а также узнаем, как оптимизировать сетевой запрос в следующих руководствах.

Далее →



Следите за регулярными обновлениями. Подпишитесь на me и Parsed Inc. чтобы никогда не пропустить еще один!

Также давайте дружить в LinkedIn, GitHub, Twitter и Facebook!

Чтобы узнать больше обо мне и моей работе, посетите мой сайт!

Подписывайтесь на ParsedInc.com. в Facebook, LinkedIn и Instagram!

Если вам понравилась эта статья, не стесняйтесь 👏👏👏 несколько раз и поделитесь ею с другом, чтобы она дошла до тех, кому нужно ее прочитать. Спасибо!