Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Background Thread

Das Thema "Background Thread" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 03.02.2012, 20:04   #1 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 15.08.2010
Beiträge: 66
Abgegebene Danke: 9
Erhielt 0 Danke für 0 Beiträge
Standard Background Thread

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();
ben56a ist offline   Mit Zitat antworten
Alt 03.02.2012, 20:09   #2 (permalink)
Android Guru

Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus

Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
Standard AW: Background Thread

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.
__________________
Follow/Add/Circle/Whatever me on Google+

Solitaire HD, ein Solitaire optimiert für Honeycomb.
the_alien ist offline   Mit Zitat antworten
Alt 03.02.2012, 20:11   #3 (permalink)
Android Experte
 
Benutzerbild von DieGoldeneMitte

Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
Standard AW: Background Thread

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.Ä.
__________________
Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon.
Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten.
Tipp: Zum "Danke" sagen gibt es einen Button.
DieGoldeneMitte ist offline   Mit Zitat antworten
Alt 03.02.2012, 20:27   #4 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 15.08.2010
Beiträge: 66
Abgegebene Danke: 9
Erhielt 0 Danke für 0 Beiträge
Standard AW: Background Thread

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 ist offline   Mit Zitat antworten
Alt 04.02.2012, 13:39   #5 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 15.08.2010
Beiträge: 66
Abgegebene Danke: 9
Erhielt 0 Danke für 0 Beiträge
Standard AW: Background Thread

Zitat:
Zitat von ben56a Beitrag anzeigen
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.ja va: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:16 16)
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:16 14)
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:16 14)
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:16 14)
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:3 56)
02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:16 16)
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:16 14)
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:3 56)
02-04 14:37:12.254: E/AndroidRuntime(11042): at com.android.internal.policy.impl.PhoneWindow$Decor View.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.j ava: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.jav a: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$MethodAndArgsCa ller.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

Geändert von ben56a (04.02.2012 um 14:38 Uhr)
ben56a ist offline   Mit Zitat antworten
Alt 06.02.2012, 18:38   #6 (permalink)
Android-Hilfe.de Mitglied

Registriert seit: 15.08.2010
Beiträge: 66
Abgegebene Danke: 9
Erhielt 0 Danke für 0 Beiträge
Standard AW: Background Thread

Zitat:
Zitat von ben56a Beitrag anzeigen
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.ja va: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:16 16)
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:16 14)
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:16 14)
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:16 14)
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:3 56)
02-04 14:37:12.254: E/AndroidRuntime(11042): at android.view.ViewGroup.drawChild(ViewGroup.java:16 16)
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:16 14)
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:3 56)
02-04 14:37:12.254: E/AndroidRuntime(11042): at com.android.internal.policy.impl.PhoneWindow$Decor View.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.j ava: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.jav a: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$MethodAndArgsCa ller.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?
ben56a ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Sound Player im Background efes312 Business und Organisation 4 28.11.2011 23:19
Background apps HD? demick Acer Iconia A500 / A501 Forum 3 22.10.2011 20:51
Wallpaper/Background/Hintergründe Mr.Svoboda Sony Ericsson Xperia Neo / Neo V Forum 3 04.07.2011 12:25
Eigener Background NautilusIII Android Allgemein 1 20.07.2010 11:30
background service swordi Android App Entwicklung 11 23.04.2010 10:23




Du liest gerade: "Background Thread" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.