1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. ben56a, 03.02.2012 #1
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

    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



    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

    hat denn niemand eine ahnung?
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] The application may be doing too much work on its main thread Android App Entwicklung 01.11.2017
[ERLEDIGT] Navigation Drawer stürzt ab nach dem schchließen durch thread Android App Entwicklung 13.03.2017
Buttonfarbe ständig wechseln Android App Entwicklung 06.01.2017
Du betrachtest das Thema "Background Thread" im Forum "Android App Entwicklung",