Android Kommunikation zwischen Service und Activity

C

ChrisH

Gast
Hallo,
Ich habe mal eine Frage:

Am Anfang der Activity soll einmal die Zeit abgefragt werden, die dann auch in den TextViews angezeigt wird. Nun wird ein Service gestartet, der nach jeder Minute der Activity "sagen" soll, dass die Zeit aktualisiert werden muss. Ich habe im Internet verschiedene Methoden gefunden, zwischen dem Service und der Activity zu kommunizieren. Mir schien die Methode mit dem BroadcastReceiver am sinnvollsten und überschaubarsten. Wenn ich jetzt aber die Applikation starte wird die Zeit nicht aktualisiert.
Ich habe mich nun schon länger damit beschäftigt, aber keine Lösung gefunden.

Über Antworten und Tipps würde ich mich sehr freuen!


Hier ist der Quellcode(da ich mir Java selbst beigebracht habe, oder dabei bin ist die Textformatierung sicherlich nicht korrekt) von meiner Activity:

Java:
public class Home extends Activity {
   
	
	TextView tv1;
	TextView tv2;
	Time time = new Time();
	private BroadcastReceiver mReceiver;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.homelayout);
        
        tv1 = (TextView)findViewById(R.id.textView1);
        tv1.setTextColor(Color.GRAY);
        tv2 = (TextView)findViewById(R.id.textView2);
        tv2.setTextColor(Color.GRAY);
        time.setToNow();
        tv1.setText(time.format("%H%:%M"));
        tv2.setText(time.format("%d%.%m%.%Y"));
        startService(new Intent(this,UhrService.class));
        
    }
    	
    	
    	 
    	private void refresh(){
    	 tv1.setText(time.format("%H%:%M"));
    	 tv2.setText(time.format("%d%.%m%.%Y"));
    	 }
    	 

    
    @Override
    public void onResume(){
    	super.onResume();
    	IntentFilter filter = new IntentFilter("android.intent.action.MAIN");
    	mReceiver = new BroadcastReceiver() {
    	@Override
    	 public void onReceive(Context arg0, Intent arg1) {
    	 refresh();
    	 }
    	 };
    	this.registerReceiver(mReceiver,filter);
    	
    }
    
    @Override
    public void onPause(){
    	super.onPause();
    	this.unregisterReceiver(this.mReceiver);
    	
    }
}

...und hier von meinem Service:

Java:
public class UhrService extends Service {

	
		Time time = new Time();
		int altMinute;
		int z;
		
	@Override
	public void onCreate(){
		super.onCreate();
		z = 1;
		ZeitHolen();
		
	}
		void ZeitHolen(){
			
			
		while(true){	
		time.setToNow();
				
		             if(z==1)
                                      {
				altMinute=time.minute;
				z++;
			}
				
				
		int dif = time.minute-altMinute;
	           		
			if(dif>=1)
                                      {
	           			
			Intent intent = new Intent("android.intent.action.MAIN");
			sendBroadcast(intent);
                                      altMinute=time.minute;
	           		}

	           			
	           			
	           		}	
	        
		}
		
		

		@Override
		public IBinder onBind(Intent arg0) {
			// TODO Auto-generated method stub
			return null;
		}
		}
 

schlingel

Gesperrter Benutzer
Wo sollte denn die Zeit aktualisiert werden? Du machst ja nie eine Veränderung am Time-Objekt, dementsprechend bleibt es immer gleich.

Du müsstest im refresh() schon auch die Zeit und nicht nur die Views updaten. Warum brauchst du da überhaupt einen Service? Gibt's Bereiche wo diese Updates von Interesse sind auch wenn die Activity nicht gerade sichtbar ist?

Wenn nein wäre ein Thread sinnvoller.
 
C

ChrisH

Gast
Danke für die schnelle Antwort!

Ja, es muss schon ein Service sein.

Ich habe das im refresh() jetzt geändert, aber die Zeit wird trotzdem nicht aktualisiert.
Ich finde im Quellcode keinen Fehler.
 
C

ChrisH

Gast
So:
Java:
private void refresh(){
    	time.setToNow();
    	tv1.setText(time.format("%H%:%M"));
    	tv2.setText(time.format("%d%.%m%.%Y"));
}
 
C

ChrisH

Gast
Jetzt kommt immer die Meldung : Die Anwendung reagiert nicht mehr.

Davor wird der Service gestartet und durchläuft x-mal die while-Schleife.
Glaube nicht, dass onReceive() aufgerufen wird (davor komm immer die Fehlermeldung)
 

schlingel

Gesperrter Benutzer
Jetzt kommt immer die Meldung : Die Anwendung reagiert nicht mehr.

Davor wird der Service gestartet und durchläuft x-mal die while-Schleife
Klar, der Service ist in einer Endlosschleife. Für das System ist nicht erkennbar ob die App hängt oder ob das tatsächlich gewollt war.

Löse das ganze mit Threads und lass diesen periodisch schlafen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Android Kommunikation zwischen UI -> Service -> Thread Android & Cross-Platform Mobile Apps 4
? Android erstellen der grafischen Benutzeroberfläche und Kommunikation zwischen Apps Android & Cross-Platform Mobile Apps 8
G Android Kommunikation zwischen den Activities Android & Cross-Platform Mobile Apps 1
G Android UDP Kommunikation Android & Cross-Platform Mobile Apps 1
S Kommunikation im Hintergrund Android & Cross-Platform Mobile Apps 10
N Android Client-Server-Kommunikation: push oder poll? Android & Cross-Platform Mobile Apps 10
Fab1 Kommunikation Fernbedienung --> Smartphone Android & Cross-Platform Mobile Apps 5
Julius99 Android Distanz zwischen zwei Location Android & Cross-Platform Mobile Apps 12
U Telepräsenz zwischen Notebook und Roboter Android & Cross-Platform Mobile Apps 1
N Android Informationen zwischen Tabs austauschen Android & Cross-Platform Mobile Apps 2
M Android Kabellose Datenübertragung zwischen zwei Handys - Reichweiten Android & Cross-Platform Mobile Apps 3
K Android Datenaustausch zwischen zwei Fragments Android & Cross-Platform Mobile Apps 1
B Android Kollision zwischen 2 Bitmaps Prüfen? Android & Cross-Platform Mobile Apps 4
R Android Datenaustausch zwischen PC und Handy Android & Cross-Platform Mobile Apps 3
S Android "Weiches wechseln" zwischen Views in einer Activity Android & Cross-Platform Mobile Apps 3
M Daten zwischen mehreren Activities Android & Cross-Platform Mobile Apps 2
M Daten zwischen Activities übergeben Android & Cross-Platform Mobile Apps 7
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
S Android Auf Funktionen zwischen Activitys zugreifen Android & Cross-Platform Mobile Apps 3
E Übergang zwischen 2 Activities Android & Cross-Platform Mobile Apps 1
G Bluetooth Verbindung zwischen Handy und PC Android & Cross-Platform Mobile Apps 5
T Unterschiede zwischen CrEme 4.1 und J9 6.1 Android & Cross-Platform Mobile Apps 3
O Bluetooth Verbindung zwischen 2 Handys Android & Cross-Platform Mobile Apps 5
T Diskrepanz zwischen SUN Toolkit und NOKIA 6610i Android & Cross-Platform Mobile Apps 3
D messages via xml zwischen server/clienthandy verschicken Android & Cross-Platform Mobile Apps 5
B Zufallszahlen zwischen 1 und 49 erstellen? aber wie? Android & Cross-Platform Mobile Apps 7
W Wieso gehen Log nicht im Service? Android & Cross-Platform Mobile Apps 20
W Background Service Daten verarbeiten/Schleife ect. Android & Cross-Platform Mobile Apps 1
L Unzuverlässiger Service Android & Cross-Platform Mobile Apps 1
J Service starte nicht mehr Android & Cross-Platform Mobile Apps 13
J intend Service im Android Studio Android & Cross-Platform Mobile Apps 4
L Eingaben in der MainActivity einem Service übergeben Android & Cross-Platform Mobile Apps 0
L Prüfen ob Service läuft Android & Cross-Platform Mobile Apps 3
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
G GPS in einem Service abfragen Android & Cross-Platform Mobile Apps 2
D Java ME Bild vom Web-Service aus zurück geben Android & Cross-Platform Mobile Apps 8
T Android Datenbankverbindung in Service für Push Notification Android & Cross-Platform Mobile Apps 0
G Thread in einer Service erstellen Android & Cross-Platform Mobile Apps 0
S Android In Service überprüfen ob eine Activity gebunden ist? Android & Cross-Platform Mobile Apps 6
D Android selben Service mehrmals Aufrufen Android & Cross-Platform Mobile Apps 17
L Android Zugriff aus unbound Service auf Preferences Android & Cross-Platform Mobile Apps 2

Ähnliche Java Themen

Neue Themen


Oben