Servizi in Android

Le basi
Per creare un servizio, devi creare una sottoclasse di Service o utilizzare una delle sue sottoclassi esistenti. Nella tua implementazione, devi sovrascrivere alcuni metodi di callback che gestiscono aspetti chiave del ciclo di vita del servizio e fornire un meccanismo che consenta ai componenti di associarsi al servizio, se appropriato. Questi sono i metodi di callback più importanti che dovresti sovrascrivere:

onStartCommand()
Il sistema richiama questo metodo chiamando startService() quando un altro componente (come un’attività) richiede l’avvio del servizio. Quando questo metodo viene eseguito, il servizio viene avviato e può essere eseguito in background a tempo indeterminato. Se lo implementi, è tua responsabilità interrompere il servizio quando il suo lavoro è completo chiamando stopSelf() o stopService(). Se si desidera fornire solo l’associazione, non è necessario implementare questo metodo.

onBind()
Il sistema richiama questo metodo chiamando bindService() quando un altro componente desidera eseguire il binding con il servizio (ad esempio per eseguire RPC). Nell’implementazione di questo metodo, devi fornire un’interfaccia che i client utilizzano per comunicare con il servizio restituendo un IBinder. Devi sempre implementare questo metodo; tuttavia, se non si desidera consentire l’associazione, è necessario restituire null.

onCreate()
Il sistema richiama questo metodo per eseguire procedure di installazione una tantum quando il servizio viene creato inizialmente (prima di chiamare onStartCommand() o onBind()). Se il servizio è già in esecuzione, questo metodo non viene chiamato.

onDestroy()
Il sistema richiama questo metodo quando il servizio non viene più utilizzato e viene distrutto. Il tuo servizio dovrebbe implementarlo per ripulire tutte le risorse come thread, listener registrati o ricevitori. Questa è l’ultima chiamata ricevuta dal servizio.”

Esempio di servizio in Android :

public class HelloService extends Service {
  private Looper serviceLooper;
  private ServiceHandler serviceHandler;

  // Handler that receives messages from the thread
  private final class ServiceHandler extends Handler {
      public ServiceHandler(Looper looper) {
          super(looper);
      }
      @Override
      public void handleMessage(Message msg) {
          // Normally we would do some work here, like download a file.
          // For our sample, we just sleep for 5 seconds.
          try {
              Thread.sleep(5000);
          } catch (InterruptedException e) {
              // Restore interrupt status.
              Thread.currentThread().interrupt();
          }
          // Stop the service using the startId, so that we don't stop
          // the service in the middle of handling another job
          stopSelf(msg.arg1);
      }
  }

  @Override
  public void onCreate() {
    // Start up the thread running the service. Note that we create a
    // separate thread because the service normally runs in the process's
    // main thread, which we don't want to block. We also make it
    // background priority so CPU-intensive work doesn't disrupt our UI.
    HandlerThread thread = new HandlerThread("ServiceStartArguments",
            Process.THREAD_PRIORITY_BACKGROUND);
    thread.start();

    // Get the HandlerThread's Looper and use it for our Handler
    serviceLooper = thread.getLooper();
    serviceHandler = new ServiceHandler(serviceLooper);
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
      Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();

      // For each start request, send a message to start a job and deliver the
      // start ID so we know which request we're stopping when we finish the job
      Message msg = serviceHandler.obtainMessage();
      msg.arg1 = startId;
      serviceHandler.sendMessage(msg);

      // If we get killed, after returning from here, restart
      return START_STICKY;
  }

  @Override
  public IBinder onBind(Intent intent) {
      // We don't provide binding, so return null
      return null;
  }

  @Override
  public void onDestroy() {
    Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
  }
}

Articolo completo :
https://developer.android.com/guide/components/services#java

Socket in Android

Una App android, come tutte le App ed i programmi, può accedere alle porte di comunicazione della rete a cui è connesso il dispositivo.
Le porte sono un oggetto molto importante per tutti i dispositivi connessi in rete di cui è bene avere una conoscenza minima.
Basti dire che chiunque voglia collegarsi al vostro dispositivo, anche a vostra insaputa, lo deve fare attraverso le porte (Socket).

Il flusso dei dati nelle comunicazioni attraverso web avviene solo ed esclusivamente tramite le porte attraverso il protocolli TCPIP/UDP, inizialmente ideati per scopi esclusivamente militari. Dal vostro dispositivo, (PC/TABLET/SMARTPHONE…), il flusso attraverso una porta passa per il vostro modem/router, fornito e gestito dal vostro provider internet, e via via raggiunge la destinazione. Ogni punto della rete che il vostro flusso incontra, deve fare i conti con la politica di gestione delle porte di quel punto…

Per fare un esempio, il protocollo http, (quello che utilizzate per navigare), viaggia sulla porta 80, se non diversamente specificato.

Di seguito vi fornisco il link alla documentazione della classe Android Socket :
Documentazione Classe Socket

Concetto di Attività in Android

“Un’attività fornisce la finestra in cui l’app disegna la sua interfaccia utente. Questa finestra in genere riempie lo schermo, ma può essere più piccola dello schermo e fluttuare sopra altre finestre. In genere, un’attività implementa una schermata in un’app. Ad esempio, una delle attività di un’app può implementare una schermata Preferenze, mentre un’altra attività implementa una schermata Seleziona foto.

La maggior parte delle app contiene più schermi, il che significa che comprendono più attività. In genere, un’attività in un’app viene specificata come attività principale, ovvero la prima schermata visualizzata quando l’utente avvia l’app. Ogni attività può quindi avviare un’altra attività per eseguire azioni diverse. Ad esempio, l’attività principale in una semplice app di posta elettronica può fornire la schermata che mostra una casella di posta in arrivo. Da lì, l’attività principale potrebbe avviare altre attività che forniscono schermate per attività come la scrittura di e-mail e l’apertura di singole e-mail.

Sebbene le attività lavorino insieme per formare un’esperienza utente coesa in un’app, ogni attività è solo vagamente legata alle altre attività; in genere ci sono dipendenze minime tra le attività in un’app. In effetti, le attività spesso avviano attività appartenenti ad altre app. Ad esempio, un’app browser potrebbe avviare l’attività Condividi di un’app di social media.

Per utilizzare le attività nella tua app, devi registrare le informazioni su di esse nel manifest dell’app e devi gestire i cicli di vita delle attività in modo appropriato. Il resto di questo documento introduce questi argomenti.”

from developer.android.com, articolo completo : Activities
per iniziare : Android Documentation

Atteggiamento

Atteggiamento, Andrea Bianchini (2022)

……………………

Atteggiamento

L’atteggiamento, volto dell’umore e degli eventi,
talvolta si distoglie da ciò che abbiamo nelle menti.
siamo tristi ed una tragedia ci butta a terra,
siamo tristi ed una tragedia ci rinforza le membra.
l’umore del soldato è sempre alto, sino alla morte.
Ma rider delle disgrazie è segno di insana mente,
però non sia che il voler di abbatterci, riesca nell’intento.

Andrea Bianchini

Il mondo cambia

Il mondo cambia

Una pandemia non capita tutti i giorni, sopratutto in tempi moderni
come oggi. Ogni cosa perde di valore, non sappiamo più cosa conta
nella vita e cosa no. Le scale di valori cambiano così come quelle
dei beni primari. Non tutti sono dell’umore di cantare ne nelle
condizioni, e non tutti sono dell’umore di ascoltare musica, anche
perchè se non fossero i massmedia ad ‘orientarci’, di produzione
ce n’è veramente a bizzeffe, lo stesso dicasi per i libri.
Siamo stanchi di sentire parlare, e così tutto volge sul genere leggero,
poco impegno mentale e che rilassi, molti prefersicono spegnere,
addirittura la tv o lo stesso computer. Si fanno spazio le letture brevi,
le immagini, i video brevi.
La popolazione mondiale ha di recente superato gli otto miliardi di
individui…
Il mondo sta veramente cambiando.

Andrea Bianchini

Vissuto

Vissuto, Andrea Bianchini (2022)

—————

Vissuto, Andrea Bianchini (2022)

———————-

Vissuto

Adagio, solenne, va il mio pensiero,
ai tempi andati e mai tornati.
Avvinghiati al mio ricordo,
così che tu possa dimenticare
ciò che più non è, più non siamo.
Attraverso le porte del presente
e mi dirigo verso l’ignoto futuro.
Ma ricco del mio buono, cattivo,
ma pieno e senza rimpianti, vissuto.

Andrea Bianchini

Low pressure

Low pressure, Andrea Bianchini (2022)

Low pressure

Shadows of my dead
obscure the sun
making the night mild
and the day cold.

We have thousands of opportunities
but in life few among us
can hear the voice
that answers the Question.

GRAZIE!

Volevo ringraziare tutti i visitatori di questo blog, (abbiamo raggiunto la meta di 250 visite mensili!). Grazie soprattutto per i tantissimi commenti che mi inviate ! Scusate se per ovvi motivi di tempo non posso rispondere a tutti.

Grazie,

Andrea Bianchini