Android: Wie man mit Hintergrund-Thread arbeiten?

Ich habe eine Anwendung entwickelt, die Inhalte aus dem Internet aufnimmt und dementsprechend auf dem Bildschirm des Geräts zeigt. Das Programm funktioniert ganz gut, ein bisschen langsam. Es dauert ca. 3-4 Sekunden, um den Inhalt zu laden und anzuzeigen. Ich möchte den ganzen Code, der den Inhalt abruft, und zeigt ihn in einem Hintergrund-Thread und während das Programm diese Funktionen macht, möchte ich einen Fortschrittsdialog anzeigen. Könntest du mir helfen? Ich möchte vor allem lernen, wie man den Code in einen Hintergrund-Thread zu setzen.

MEIN CODE

public class Activity1 extends Activity { private ProgressDialog progressDialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new AsyncTask<Integer, Integer, Boolean>() { ProgressDialog progressDialog; @Override protected void onPreExecute() { /* * This is executed on UI thread before doInBackground(). It is * the perfect place to show the progress dialog. */ progressDialog = ProgressDialog.show(Activity1.this, "", "Loading..."); } @Override protected Boolean doInBackground(Integer... params) { if (params == null) { return false; } try { /* * This is run on a background thread, so we can sleep here * or do whatever we want without blocking UI thread. A more * advanced use would download chunks of fixed size and call * publishProgress(); */ Thread.sleep(params[0]); // HERE I'VE PUT ALL THE FUNCTIONS THAT WORK FOR ME } catch (Exception e) { Log.e("tag", e.getMessage()); /* * The task failed */ return false; } /* * The task succeeded */ return true; } @Override protected void onPostExecute(Boolean result) { progressDialog.dismiss(); /* * Update here your view objects with content from download. It * is save to dismiss dialogs, update views, etc., since we are * working on UI thread. */ AlertDialog.Builder b = new AlertDialog.Builder(Activity1.this); b.setTitle(android.R.string.dialog_alert_title); if (result) { b.setMessage("Download succeeded"); } else { b.setMessage("Download failed"); } b.setPositiveButton(getString(android.R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dlg, int arg1) { dlg.dismiss(); } }); b.create().show(); } }.execute(2000); new Thread() { @Override public void run() { // dismiss the progressdialog progressDialog.dismiss(); } }.start(); } } 

  • Realm `Zugriff von falschem Thread` Fehler bei Verwendung von gemeinsam genutztem Code zwischen IntentService und AsyncTask (Android)
  • Android-Thread.join () verursacht Anwendung zu hängen
  • Objekt nicht durch Thread gesperrt vor Benachrichtigung () in onPostExecute
  • Java.lang.IllegalMonitorStateException: Objekt nicht durch Thread gesperrt vor warten ()?
  • Handler.post (runnable) führt nicht immer die Run-Methode in Android
  • Sollte ich setDaemon () in android verwenden?
  • Warum Handler verwenden, während runOnUiThread das selbe macht?
  • Android: Warum kann ich keinen Handler in neuem Thread erstellen?
  • 3 Solutions collect form web for “Android: Wie man mit Hintergrund-Thread arbeiten?”

    Überprüfen Sie die ASyncTask , die speziell für solche Aufgaben erstellt wurde.

     public Runnable NameOfRunnable = new Runnable() { @Override public void run() { while (true) { // TODO add code to refresh in background try { Thread.sleep(1000);// sleeps 1 second } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; 

    Jetzt fängst du damit an

      Thread name = new Thread(NameOfRunnable); name.start(); 

    Wie man mit Background Thread arbeitet

    Hinweis:

    Arbeiten Sie nicht mit UI mit diesem Hintergrund Thread .

     AsyncTask.execute(new Runnable() { @Override public void run() { //TODO background code } }); 

    Hoffe das würde dir helfen

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.