Ciertas aplicaciones muestran datos en tiempo real a los usuarios, como precios de acciones, disponibilidad de un producto en tiendas en línea, etc. Mostrar datos en tiempo real requiere una sincronización continua de la aplicación y podría ser posible implementando un programa como un hilo. . La aplicación podría iniciar un subproceso y actualizar la información en tiempo real de forma implícita o explícita. El trato aquí es actualizar continuamente los datos (quizás desde los servidores) a costa de RAM, caché y batería adicionales del dispositivo, lo que resulta en un bajo rendimiento, ya que un subproceso que se ejecuta para siempre ocupa algo de espacio y requiere energía. Para evitar el uso de dichos programas, los desarrolladores desarrollaron explícitamente una función para actualizar la aplicación, de modo que el usuario pueda ejecutarla cuando sea necesario. Esto nos lleva a concluir que la actualización manual tiene ventajas como:
- Optimización de RAM
- Optimización de memoria caché
- Optimización de la duración de la batería
- Evitar devoluciones de llamadas innecesarias.
Por ejemplo, en la siguiente imagen, cuando el usuario deslice hacia abajo la pantalla, la string «Deslizar para actualizar» se cambiará a «Actualizado».
Acercarse:
Paso 1: antes de comenzar a escribir el código, es esencial agregar una dependencia de Swipe Refresh Layout en el build.Gradle de la aplicación para habilitar los diseños de deslizamiento. Esta dependencia es:
implementación «androidx.swiperefreshlayout:swiperefreshlayout:1.1.0»
Paso 2: Es importante comenzar con el Front-End » actividad_principal.xml «. Cree un SwipeRefreshLayout para actualizar el diseño y agregue un TextView para mostrar la string en la pantalla y proporcionarles ciertas ID.
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <!--Swipe Refresh Layout --> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/refreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--TextView --> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Swipe to refresh" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </RelativeLayout>
Paso 3: Llegando al archivo » MainActivity «, a continuación se proporciona una vista previa del mismo. En este archivo, conecte swipeRefreshLayout y textView a su archivo XML utilizando el método. Y también llame al para cambiar el texto después de que el usuario deslice hacia abajo la pantalla. Los usuarios también pueden escribir los códigos requeridos según sus necesidades dentro de este método.
Kotlin
import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import org.w3c.dom.Text class MainActivity : AppCompatActivity() { @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Declaring a layout (changes are to be made to this) // Declaring a textview (which is inside the layout) val swipeRefreshLayout = findViewById<SwipeRefreshLayout>(R.id.refreshLayout) val textView = findViewById<TextView>(R.id.tv1) // Refresh function for the layout swipeRefreshLayout.setOnRefreshListener{ // Your code goes here // In this code, we are just changing the text in the // textbox textView.text = "Refreshed" // This line is important as it explicitly refreshes only once // If "true" it implicitly refreshes forever swipeRefreshLayout.isRefreshing = false } } }
Java
import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import org.w3c.dom.Text public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Declaring a layout (changes are to be made to this) // Declaring a textview (which is inside the layout) SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.refreshLayout); TextView textView = (TextView)findViewById(R.id.tv1); // Refresh the layout swipeRefreshLayout.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { // Your code goes here // In this code, we are just // changing the text in the textbox textView.text = "Refreshed" // This line is important as it explicitly // refreshes only once // If "true" it implicitly refreshes forever swipeRefreshLayout.setRefreshing(false); } } ); } }
Salida: ejecutar en el emulador
Ventajas
Por supuesto, no son sólo los usuarios los que se benefician. Suponiendo una aplicación, donde la información se obtiene directamente de un repositorio en la nube. Por cada solicitud de devolución de llamada (hacia la nube), el desarrollador que posee dicho repositorio paga una cantidad mínima por el servicio, ya sea Google Cloud Platform (GCP) , Amazon Web Services (AWS) o cualquier otra cosa.
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA