0

У меня есть приложение для Android, которое выводит состояние устройства с веб-сервера. В настоящее время я пытаюсь автоматически синхронизировать с базой данных, чтобы получать обновления для моего Android.Android: Auto Pull из веб-базы данных при пробуждении экрана

Вот следующие вещи, которые я думал, что я могу использовать:

  1. Имея кнопку обновления, которые пользователь может щелкнуть и получить детали снова из базы данных.

  2. Способ потянуть-к-обновлению кажется приличным тоже.

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

В моем текущем приложении, если пользователь не взаимодействует с экраном приложения, экран в настоящее время тускнеет, технически я думаю, что он ложится спать.

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

Этого я могу достичь? Можно ли это сделать, выполнив задачу 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> 

Пожалуйста, помогите

ответ

0

вы можете использовать services, его точно предназначен для этого. вот хороший учебник, который поможет вам начать работу http://www.vogella.com/tutorials/AndroidServices/article.html и вот андроидные документы для служб. http://developer.android.com/guide/components/services.html

+0

Спасибо, что посмотрели на это, информация, которую вы дали, была полезна, но это может не понравиться моему делу. Беда в том, что если я запустил его как службу, служба должна обнаружить событие, например, через уведомление или что-то еще, чтобы служба могла быть запущена и работать по желанию. Причина, по которой я полагался на пробуждение или что-то, была настолько, что что-то может сказать моему приложению, чтобы теперь синхронизировать и извлекать детали из базы данных. – Rahul

+0

Есть что-то, что называется липким сервисом. –