Philipp K
- Forum-Beiträge: 27
10.10.2011, 18:22:45 via Website
10.10.2011 18:22:45 via Website
Hallo!
Ich habe einen TimerService der die UI updaten soll. Jedoch habe ich keinen Plan wie ich einen Listener an das Service übergeben kann.
Derzeitiger Code:
Aufruf:
Vorheriger Code:
Dieses funktioniert wunderbar, jedoch wenn die App in den Hintergrund gelegt wird und ich die App wieder öffne läuft der Timer nicht mehr.
mfg
korndi
Ich habe einen TimerService der die UI updaten soll. Jedoch habe ich keinen Plan wie ich einen Listener an das Service übergeben kann.
Derzeitiger Code:
1public class TimerService extends Service{
2
3 CountDownTimer timer;
4 Chronometer clock;
5 public static ServiceUpdateUIListener UI_UPDATE_LISTENER;
6
7 @Override
8 public IBinder onBind(Intent intent) {
9
10 return null;
11 }
12 @Override
13 public void onStart(Intent intent, int startId) {
14 // TODO Auto-generated method stub
15 int ms = intent.getIntExtra("ms", 0);
16
17 timer = new CountDownTimer(ms,1000){
18 @Override
19 public void onTick(long millisUntilFinished) {
20
21 int seconds = (int) (millisUntilFinished / 1000) % 60 ;
22 int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
23 int hours = (int) ((millisUntilFinished / (1000*60*60)) % 24);
24
25 clock.setText( String.format("%02d:%02d:%02d", hours,minutes,seconds));
26 Log.e("Timer", String.valueOf(millisUntilFinished));
27
28 }
29
30 @Override
31 public void onFinish() {
32 // TODO Auto-generated method stub
33
34 }
35 }.start();
36 super.onStart(intent, startId);
37 }
38 public static void setUpdateListener(ServiceUpdateUIListener l) {
39 UI_UPDATE_LISTENER = l;
40
41 }
2
3 CountDownTimer timer;
4 Chronometer clock;
5 public static ServiceUpdateUIListener UI_UPDATE_LISTENER;
6
7 @Override
8 public IBinder onBind(Intent intent) {
9
10 return null;
11 }
12 @Override
13 public void onStart(Intent intent, int startId) {
14 // TODO Auto-generated method stub
15 int ms = intent.getIntExtra("ms", 0);
16
17 timer = new CountDownTimer(ms,1000){
18 @Override
19 public void onTick(long millisUntilFinished) {
20
21 int seconds = (int) (millisUntilFinished / 1000) % 60 ;
22 int minutes = (int) ((millisUntilFinished / (1000*60)) % 60);
23 int hours = (int) ((millisUntilFinished / (1000*60*60)) % 24);
24
25 clock.setText( String.format("%02d:%02d:%02d", hours,minutes,seconds));
26 Log.e("Timer", String.valueOf(millisUntilFinished));
27
28 }
29
30 @Override
31 public void onFinish() {
32 // TODO Auto-generated method stub
33
34 }
35 }.start();
36 super.onStart(intent, startId);
37 }
38 public static void setUpdateListener(ServiceUpdateUIListener l) {
39 UI_UPDATE_LISTENER = l;
40
41 }
Aufruf:
1Intent i = new Intent(Timer.this,service.class); //service cannot be resolved to a type
2 i.putExtra("ms", ms);
3 startService(i);
2 i.putExtra("ms", ms);
3 startService(i);
Vorheriger Code:
1TimerService service = new TimerService();
2 TimerService.setUpdateListener(new ServiceUpdateUIListener() {
3
4 @Override
5 public void updateUI(String time) {
6 clock.setText(time);
7
8 }
9 });
2 TimerService.setUpdateListener(new ServiceUpdateUIListener() {
3
4 @Override
5 public void updateUI(String time) {
6 clock.setText(time);
7
8 }
9 });
Dieses funktioniert wunderbar, jedoch wenn die App in den Hintergrund gelegt wird und ich die App wieder öffne läuft der Timer nicht mehr.
mfg
korndi
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.