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

    korndi Threadstarter Junior Mitglied

    Hallo.

    Ich habe ein TimerService und möchte gerne in der onTick Methode in einem Chronometer die Zeit herunterzählen. Ohne Service hat es bestends geklappt.

    Mein Code

    Aufruf:
    Code:
     Intent i  = new Intent(Timer.this,TimerService.class);
                i.putExtra("ms", ms);
                startService(i);
    Service:

    Code:
    public class TimerService extends Service{
    
        CountDownTimer timer;
        Chronometer clock;
        @Override
        public IBinder onBind(Intent intent) {
    
            return null;
        }
        public void setClock (Chronometer cron)
        {
            this.clock = cron;
        }
        @Override
        public void onStart(Intent intent, int startId) {
            // TODO Auto-generated method stub
            int ms = intent.getIntExtra("ms", 0);
    
            timer = new  CountDownTimer(ms,1000){
                @Override
                public void onTick(long millisUntilFinished) {
    
                    int seconds = (int) (millisUntilFinished / 1000) % 60 ;
                    int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
                    int hours   = (int) ((millisUntilFinished / (1000*60*60)) % 24);
    
                    clock.setText( String.format("%02d:%02d:%02d", hours,minutes,seconds));
                    Log.e("Timer", String.valueOf(millisUntilFinished));
    
                }
    
                @Override
                public void onFinish() {
                    // TODO Auto-generated method stub
    
                }
            }.start();
            super.onStart(intent, startId);
        }
    Wie kann ich den Chronometer in meine Service ansteuern?

    danke

    Danke
     
  2. sixi, 05.10.2011 #2
    sixi

    sixi Erfahrener Benutzer

    Aus dem Service heraus solltest du das eher nicht tun: der Service (liegt in der Natur von einem Service) kann unabhängig von jeglicher UI laufen, d.h. es ist nicht garantiert, dass es irgendwelche grafischen Elemente gibt, die du aktualisieren kannst.

    Es gibt zwei (bestimmt noch mehr ^^) Lösungswege:
    Du benutzt einen Broadcast Receiver in der Activity, welcher die Änderungen, die vom Service kommen entgegennimmt und diese in der UI anzeigt - oder
    du gehst über die "Application" - also nimmst eine Klasse die davon erbt. Diese existiert quasi immer (also der Context der Application, auch wenn "nur" der Service läuft) - und deligierst von da aus die Änderungen an die Activity weiter, die die UI Elemente enthält.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Komplexe View erstellen Android App Entwicklung 13.09.2017
[ERLEDIGT] Probleme mit Service unter Android N Android App Entwicklung 16.07.2017
[ERLEDIGT] Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung 23.06.2017
[ERLEDIGT] Android Studio meint ich soll lokale Variablen verwenden Android App Entwicklung 29.04.2017
[OFFEN] Service wird bei manchen Geräten nicht gestartet Android App Entwicklung 09.04.2017
[RÜCKMELDUNG FEHLT] Text und Bilder in View einbinden Android App Entwicklung 26.03.2017
[ERLEDIGT] Interpolator für einen Custom Dialog verwenden in einem Fragment Android App Entwicklung 20.03.2017
[ERLEDIGT] View zum selektieren der Wochentage Android App Entwicklung 19.03.2017
Fehlermeldung: Incorrectly called buildLayer on View: ShortcutAndWidgetContainer, destroying layer... Android App Entwicklung 30.01.2017
Viewelemente neu zeichnen Android App Entwicklung 04.01.2017
Du betrachtest das Thema "Verwendung einer View in einem Service" im Forum "Android App Entwicklung",