1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Background Thread

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von ben56a, 03.02.2012.

  1. ben56a, 03.02.2012 #1
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    Hallo...

    ich lade mir in einem Background Thread Daten von einem Server. Gleichzeitig wird die das Layout aufgebaut.

    Problem: Ich benötige die Daten welche runtergeladen wurden, bereits zu dem Zeitpunkt, an dem die Oberfläche aufgebaut wird.

    Gibt es da eine Lösung, wie man Buttons erst nach dem beenden des Background Threads starten kann?

    Code:
     new Thread() {
                    public void run() {
          
                    	  try {
                    	
                    		  sleep(5000);
                    		  
                 		//load data from server
    
             
                   handler.sendEmptyMessage(0);
               progDailog.dismiss();                                   
              }
           }.start();
    
     
  2. the_alien, 03.02.2012 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Zeige solange die Daten geladen werden ein Loading-Layout.
    Also so lange geladen wird einfach eine ProgressBar anzeigen lassen und danach das eigentliche Layout laden.
     
  3. DieGoldeneMitte, 03.02.2012 #3
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Dafür gibts das Attribut visibility (oder auch enbaled). Du machst die Buttons unsichtbar/disabled oder gone und machst sie sichbar, wenn du fertig bist.

    Zur Not kannst du auch an einen View (als den, wo die Buttons rein sollen) mit addView Buttons dynamisch hinzufügen.

    Das ganze hat nur einen Haken: Da man die UI nicht in Hintergrundthreads verändern kann, muss man da mit Handler oder AsyncTask arbeiten.

    ADD: wärend des Ladens zeigt man - wie the_alien auch sagt - natürlich einen progressdialog o.Ä.
     
  4. ben56a, 03.02.2012 #4
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    das problem ist, dass das laden der daten und das aufbauen der tabview gleichzeitig stattfindet (was bei threads ja logisch ist) aber die tabs werden bereits dort geladen. Allerdings fehtl mir der Inhalt, da dieser noch nicht fertig geladen ist.
     
  5. ben56a, 04.02.2012 #5
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010


    Code:
     new Thread(new Runnable() { 
                public void run(){
                      //load data from server
                      handler.sendEmptyMessage(0);
                }	    
    }).start();
        
    
    Code:
    private Handler handler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			
    			TabHost mTabHost = getTabHost();
    		      
    			
    			TabSpec tabtest1 = CreateTabHost(mTabHost, getApplicationContext(), "tab_test2", "test", test1Activity.class);	   
    		    mTabHost.addTab(tabtest1);
    		    
    		    TabSpec tabMap1 = CreateTabHost(mTabHost, getApplicationContext(), "tab_test1", "test2", test2Activity.class);	   
    		    mTabHost.addTab(tabMap1);
    			
    		    mTabHost.setCurrentTab(0);
    		    
    		    progDailog.dismiss(); 
    
    		}
    	};
    
    wird der handler eg nicht nach dem laden der daten aufgerufen?

    ADD:

    folgende Fehlerneldung:


    02-04 14:37:12.244: E/AndroidRuntime(11042): Uncaught handler: thread main exiting due to uncaught exception
    02-04 14:37:12.254: E/AndroidRuntime(11042): java.lang.NullPointerException
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.widget.TabWidget.dispatchDraw(TabWidget.java:216)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.View.draw(View.java:6630)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1616)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1614)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1614)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1614)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.View.draw(View.java:6630)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.widget.FrameLayout.draw(FrameLayout.java:356)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1616)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:1614)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1343)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.View.draw(View.java:6630)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.widget.FrameLayout.draw(FrameLayout.java:356)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewRoot.draw(ViewRoot.java:1349)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.os.Looper.loop(Looper.java:123)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at android.app.ActivityThread.main(ActivityThread.java:4370)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at java.lang.reflect.Method.invokeNative(Native Method)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at java.lang.reflect.Method.invoke(Method.java:521)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-04 14:37:12.254: E/AndroidRuntime(11042): at dalvik.system.NativeStart.main(Native Method)
    02-04 14:37:12.274: E/SemcCheckin(11042): Get crash dump level : java.io.FileNotFoundException: /data/semc-checkin/crashdump
    02-04 14:37:12.284: I/dalvikvm(11042): threadid=7: reacting to signal 3
     
    Zuletzt bearbeitet: 04.02.2012
  6. ben56a, 06.02.2012 #6
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    hat denn niemand eine ahnung?
     

Diese Seite empfehlen