Utilizzo di AsyncTask per la connessione di networking Android

Ho delle difficoltà ad utilizzare AsyncTask perché non l'ho mai incontrato prima e non ho idea di ciò che sto facendo con esso.

Fondamentalmente sto ottenendo una forza vicino perché sto cercando di eseguire la connessione su una class principale. Potrebbe forse qualcuno aiutarmi con l'aggiunta di AsyncTask nel codice:

  • Come verificare la disponibilità dello spazio su storage esterno?
  • Libreria di giustificazione di text in Java
  • La console di debug non visualizza i messaggi dopo l'aggiornamento di Android Studio a 2.3
  • Riproduzione di video su TextureView
  • Android, tabs senza Actionbar
  • Non modificare lo background di TextInputLayout sull'errore
  •  package com.smarte.smartipcontrol; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class IPControl extends Activity { private Socket socket; private String serverIpAddress; private static final int REDIRECTED_SERVERPORT = 32; public PrintWriter out; public BufferedReader in ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the message from the intent Intent intent = getIntent(); serverIpAddress = intent.getStringExtra(IPEntry.ACTUALSMARTIP); createConnection(); } public void getModel(View view) { try { out.println("[m\r\n"); //System.out.print("root\r\n"); while (! in .ready()); String textStatus = readBuffer(); } catch (IOException e) {} } public void createConnection() { try { InetAddress serverAddr = InetAddress.getByName(serverIpAddress); socket = new Socket(serverAddr, REDIRECTED_SERVERPORT); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } try { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); while (! in .ready()); readBuffer(); out.println("root\r\n"); //System.out.print("root\r\n"); while (! in .ready()); readBuffer(); out.println("root\r\n"); //System.out.print("root\r\n"); while (! in .ready()); readBuffer(); } catch (IOException e) {} //R.id.textStatus } private String readBuffer() throws IOException { String msg = ""; while ( in .ready()) { msg = msg + (char) in .read(); } //System.out.print(msg); if (msg.indexOf("SNX_COM> ") != -1) return msg.substring(0, msg.indexOf("SNX_COM> ")); else return msg; } } 

  • Confronto tra due drawables in android
  • Come rendere compatibile Android GridLayout con una versione precedente?
  • Come creare un button personalizzato con selettore in android?
  • Il modo migliore per scaricare un file grande in android?
  • Android: personalizza il menu dell'applicazione (ad es. Colore di background)
  • Qual è la relazione tra il task e il back stack
  • 3 Solutions collect form web for “Utilizzo di AsyncTask per la connessione di networking Android”

    Solo un rapido esempio di come sembra una migtht:

     public class IPControl extends Activity { private ProgressDialog pd = null; private String data = null; private Socket socket; private String serverIpAddress; private static final int REDIRECTED_SERVERPORT = 32; public PrintWriter out; public BufferedReader in ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try{ this.pd = ProgressDialog.show(this, "Loading..", "Please Wait...", true, false); new AsyncAction().execute(); }catch (Exception e) { e.printStackTrace(); } } private class AsyncAction extends AsyncTask<String, Void, String> { protected Void doInBackground(String... args) { try { InetAddress serverAddr = InetAddress.getByName(serverIpAddress); socket = new Socket(serverAddr, REDIRECTED_SERVERPORT); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } try { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); while (! in.ready()); readBuffer(); out.println("root\r\n"); //System.out.print("root\r\n"); while (! in .ready()); readBuffer(); out.println("root\r\n"); //System.out.print("root\r\n"); while (! in .ready()); String msg = ""; while (in.ready()) { msg = msg + (char) in .read(); } } catch (IOException e) {} return null;//returns what you want to pass to the onPostExecute() } protected void onPostExecute(String result) { //resultis the data returned from doInbackground IPControl.this.data = result; if (IPControl.this.pd != null) { IPControl.this.pd.dismiss(); } } } 

    Passare attraverso questo semplice tutorial per get una buona base su ciò che un'AsyncTask è e come usarla:

    https://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

    Quindi provare a modificare il codice per utilizzare le attività di async. Se hai problemi, torna qui 🙂

    Controllando la documentazione qui ..

    È necessario mettere la parte di connessione di creazione nel doInBackground .. quindi nella onPostExecute fare tutto ciò che si desidera aggiornare la ui.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.