Anwendung neu starten

  • Antworten:6
Maximilian O
  • Forum-Beiträge: 990

26.07.2011, 18:05:33 via Website

Hallo Leute,
in den Einstellungen meiner App, kann man über eine Liste eine Währung auswählen. Diese Auswahl wird in fast jeder Activity genutzt. Daher möchte ich bei einer Änderung dieser Einstellung die App neustarten. Ist das einfach möglich?
MfG Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

26.07.2011, 18:45:47 via Website

System.exit(0);
Intent i = new Intent(this, StartActivity.class)

startActivity(i);


oder sowas in der Art

swordiApps Blog - Website

Antworten
Thomas L.
  • Forum-Beiträge: 58

27.07.2011, 08:03:19 via Website

macht man das so?
ich hab dann immer die einstellungen in allen activities als boolean mitverwaltet, und wenn die einstellungsactivity pausiert wurde, wurden in den anderen activities die einstellungen neugeladen

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

27.07.2011, 09:54:22 via Website

macht man das so?

Nein:
"To be clear: using System.exit() is strongly recommended against, and can
cause some poor interactions with the system. Please don't design your app
to need it."
(Dianne Hackborn)

Antworten
Jamari Se'tual
  • Forum-Beiträge: 8

27.07.2011, 10:10:32 via Website

Du solltest die Auswahl in einer DB oder im Android-Speicher sichern und dann beim OnCreate / OnResume immer auslesen und die Parameter deiner Activity entsprechend setzen. Ein Neustart der App sollte bei einer Auswahl einer Einstellung nicht nötig sein.

— geändert am 27.07.2011, 13:41:19

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

27.07.2011, 12:47:42 via Website

ja er wollte wissen wie man die app neu startet. ein neustart ist generell schonmal nicht so gut.

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 294

27.07.2011, 15:55:23 via Website

Ich fange hierzu immer die Rückkehr vom Einstellungsdialog ab:

1@Override
2protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) {
3 if (requestCode == <hier der Wert vom Aufruf des Settingsdialogs>) {
4 if (resultCode == RESULT_OK) {
5 startActivity(getIntent());
6 finish();
7 }
8 } else {
9 super.onActivityResult(requestCode, resultCode, intent);
10 }
11}

Das startet nur diese eine betroffene Activity neu. Der super Aufruf ist nicht unbedingt erforderlich - ich habe aber eigene abgeleitete MyActivity, MyListActivity, ... Klassen die noch weitere Dinge tun.

Meine Klasse für den Settingsdialog hält die Einstellungen statisch vor so dass ich aus jeder Activity darauf zugreifen kann. Nur die den Einstellungsdialog direkt aufrufende Activity muss ich meist neu starten.

Gruß
Harald

— geändert am 27.07.2011, 15:57:10

Antworten