Background Thread

B

ben56a

Ambitioniertes Mitglied
0
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();
 
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.
 
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.Ä.
 
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.
 
ben56a schrieb:
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.



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:
ben56a schrieb:
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

hat denn niemand eine ahnung?
 

Ähnliche Themen

W
  • waltsoft
Antworten
3
Aufrufe
722
waltsoft
W
W
  • waltsoft
Antworten
4
Aufrufe
936
waltsoft
W
A
Antworten
2
Aufrufe
1.138
AndrejT
A
Zurück
Oben Unten