У меня есть приложение для Android, которое выводит состояние устройства с веб-сервера. В настоящее время я пытаюсь автоматически синхронизировать с базой данных, чтобы получать обновления для моего Android.Android: Auto Pull из веб-базы данных при пробуждении экрана
Вот следующие вещи, которые я думал, что я могу использовать:
Имея кнопку обновления, которые пользователь может щелкнуть и получить детали снова из базы данных.
Способ потянуть-к-обновлению кажется приличным тоже.
Однако помимо этих традиционных подходов руководства я пытаюсь найти другой способ, в котором пользователь может иметь автоматическую синхронизацию без вручную делать какие-либо обновления или тянуть на экране.
В моем текущем приложении, если пользователь не взаимодействует с экраном приложения, экран в настоящее время тускнеет, технически я думаю, что он ложится спать.
Я пытаюсь найти способ, если я могу вызвать ту же задачу обновления или вытащить данные из базы данных, когда он пробудит экран приложения, так как это единственный раз, когда пользователь будет более заинтересован в см. устройство и их обновленные состояния.
Этого я могу достичь? Можно ли это сделать, выполнив задачу aysnc в onResume()
или я что-то упустил?
Мой текущий код для этой деятельности заключается в CardView
item_device.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp">
<TextView
android:id="@+id/device_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:singleLine="true"
android:text="@string/device_name_set"
android:textSize="35sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/layout_operating_temp"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_below="@id/device_name"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:scaleType="centerInside"
android:src="@drawable/temp" />
<TextView
android:id="@+id/device_temperature"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.8"
android:singleLine="true"
android:text="Temperature set to 10° celsius"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_mac_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/layout_operating_temp"
android:orientation="horizontal"
android:weightSum="1">
<ImageView
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.2"
android:scaleType="centerInside"
android:src="@drawable/mac" />
<TextView
android:id="@+id/device_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.8"
android:singleLine="true"
android:text="@string/pon_stop"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/layout_mac_address"
android:layout_marginTop="15dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="4dp"
android:orientation="horizontal"
android:weightSum="0.9">
<ImageButton
android:id="@+id/device_power"
android:layout_width="0dp"
android:background="@null"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="0.3"
android:src="@drawable/power_on" />
<ImageButton
android:id="@+id/device_start"
android:layout_width="0dp"
android:background="@null"
android:layout_height="match_parent"
android:layout_weight="0.3"
android:src="@drawable/start_on"
android:text="@string/start_off" />
<ImageButton
android:id="@+id/device_set_temperature"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@null"
android:layout_weight="0.3"
android:src="@drawable/temperature" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
Пожалуйста, помогите
Спасибо, что посмотрели на это, информация, которую вы дали, была полезна, но это может не понравиться моему делу. Беда в том, что если я запустил его как службу, служба должна обнаружить событие, например, через уведомление или что-то еще, чтобы служба могла быть запущена и работать по желанию. Причина, по которой я полагался на пробуждение или что-то, была настолько, что что-то может сказать моему приложению, чтобы теперь синхронизировать и извлекать детали из базы данных. – Rahul
Есть что-то, что называется липким сервисом. –