2017-11-09 5 views
0

Ich habe 2 Methoden in onCreate, die ich nacheinander ausführen muss ie ... die zweite Methode wird gestartet, sobald die erste Methode abgeschlossen ist, unabhängig davon, wie viel Zeit es dauert.Bitte helfen Sie mir.läuft 2 Methoden asynchron

new Handler().postDelayed(new Runnable() { 

     /* 
     * Showing splash screen with a timer. This will be useful when you 
     * want to show case your app logo/company 
     */ 

     @Override 
     public void run() { 
      // This method will be executed once the timer is over 
      // Start your app main activity 

       populateList(); 

      // close this activity 
      //finish(); 
     } 
    }, 20000);getContactList(); 

populateList() -Methode

** public void populateList() { 
Log.i("Populate List","Entered"); 

    Toast.makeText(this,String.valueOf(Common.selectedContactNos.size()),Toast.LENGTH_LONG).show(); 
    displayRecyclerAdapter = new DisplayRecyclerAdapter(DisplayContacts.this); 
    LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this); 
    recyclerView_contacts.setAdapter(displayRecyclerAdapter); 
    recyclerView_contacts.setLayoutManager(mLinearLayoutManager); 
    displayRecyclerAdapter.notifyDataSetChanged(); 
}** 
+0

post Ihren Code der populateList() Methode –

+0

Sie können AsyncTask für die gleiche verwenden. Rufen Sie Ihre andere Methode in der postExecute() - Methode der asynctask auf. –

+1

Wie @VivekMishra sagte, verwenden Sie entweder AsyncTask oder RxJava2. –

Antwort

0

Anruf beide Verfahren innerhalb run-Methode mit der Sequenz, die Sie wollen. Ersetzen Sie den Code mit folgendem Code

new Handler().postDelayed(new Runnable() { 

    /* 
    * Showing splash screen with a timer. This will be useful when you 
    * want to show case your app logo/company 
    */ 

     @Override 
     public void run() { 
      // This method will be executed once the timer is over 
      // Start your app main activity 

      populateList(); 
      getContactList(); 
      // close this activity 
      //finish(); 
     } 
    }, 20000); 
+0

sein Aber werden beide Methoden nicht gleichzeitig aufgerufen, nachdem die Zeit abgelaufen ist? –

+0

nein werden sie nacheinander aufgerufen werden –

+0

mit dieser Methode zusammen genannt werden.Ich holen einige Daten in getContactList() und dann füllen in recyclerview in populateList so ich möchte getContactList aufgerufen werden zuerst – user8601021

1

nur verwenden AsyncTask

Anruf TaskOne Klasse wie- neue TaskOne() execute().

+0

aufgerufen es gibt keine Notwendigkeit, zweite asynctask zu erstellen Sie können einfach die andere Methode in post aufrufen –

+0

populateList Methode wurde nicht mit nur 1 asynctask.do ich benutze zwei aufgerufen – user8601021

+0

Ich möchte getContactList() zuerst ausführen und dann populatelist wie populateData in getContactList() abgerufen – user8601021

Verwandte Themen