[UI]Service-Connection und Display-Rotation

  • Antworten:0
Rainu
  • Forum-Beiträge: 42

04.12.2011, 12:21:19 via Website

Hallo,

ich bin wieder einmal auf ein Problem gestoßen, wovon ich den Grund nicht kenne ;) Ich habe einen Remote-Service. Diesen starte ich in der Methode "onCreate" und binde in in der Methode "onResume()". Da meine UI ohne die Verbindung zum Service nutzlos ist, habe ich mir gedacht, lasse ich ein ProgressDialog aufblopen der erst druch die ServiceConnection Methode "onServiceConnected" dismissed wird. Somit habe ich erreicht, dass man die UI solange nicht benutzen kann, bis eine Verbindung besteht.
1@Override
2 protected void onResume() {
3 super.onResume();
4 //bevor wird keine Verbindung zum Service haben, ist die GUI
5 //nicht zu gebrauchen. Deshalb müssen wir solange warten...
6 final ProgressDialog waitForServiceDialog = ProgressDialog.show(
7 this,
8 getString(R.string.wait_for_service_connection_title),
9 getString(R.string.wait_for_service_connection_text));
10
11 loadServiceConnection = new ServiceConnection() {
12 @Override
13 public void onServiceConnected(ComponentName name, IBinder service) {
14 //bildschirm wieder freigeben
15 waitForServiceDialog.dismiss();
16
17 remoteService = ServiceRemote.Stub.asInterface(service);
18
19 //initialisierung des Listen-Inhaltes
20 initialiseList();
21 }
22
23 @Override
24 public void onServiceDisconnected(ComponentName name) {
25 }
26 };
27
28 //initiales starten und binden des Services
29 bindService(REMOTE_SERVICE_INTENT, loadServiceConnection, Context.BIND_AUTO_CREATE);
30 }
Dies scheint auf den ersten Blick auch zu funktionieren. Nun starte ich diese App im Emulator und lasse den Bildschirm rotieren: auch noch super. Nur wenn ich den Bildschirm zu schnell hintereinander rotieren lasse, bekomme ich eine Exception: java.lang.IllegalArgumentException: View not attached to window manager Im Stacktrace sehe ich dann, dass diese Exception beim waitForServiceDialog.dismiss(); aufrtitt. Nun hab ich schon etwas gegoogled und habe eine folgende Methode entdeckt "onAttachedToWindow()" nun hab ich den oben geschriebenen Code statt in die "onResume"-Methode in eben diese Methode geschrieben. Aber der Fehlerfall bleibt dennoch bestehen :(

Weis jemand Rat?

Antworten