UI updaten aus Service

  • Antworten:1
Philipp K
  • Forum-Beiträge: 27

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:

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 }


Aufruf:

1Intent i = new Intent(Timer.this,service.class); //service cannot be resolved to a type
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 });

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

Antworten
Markus B.
  • Forum-Beiträge: 636

10.10.2011, 21:28:06 via Website

Hallo, benutzt du denn auch einen remote Service ? Was du hier an Code gezeigt hast sieht mir start nach einem local Service aus. Damit kann es nicht funktionieren.

Gruß,
Markus

Antworten