Android: Obnovení aktivní činnosti při obnovení aplikace

hlasů
6

Mám dvě aktivity spuštěné: mainActivity a childActivity . Kdykoliv uživatel klikne na tlačítko v mainActivity se childActivity je vypuštěn. To, co chci udělat, je toto:

Je-li aktivní činnost je childActivity a uživatel klikne na tlačítko domů poté znovu spustit aplikaci , chci vidět childActivity místo mainActivity , který je spuštěn.

Měl jsem několik návrhů, jak vlastně funguje arounds. Snažil jsem se manipulovat onStart, onRestart, onResume, OnStop, onDestroy události. Ale oni ne zcela vyřešit. Tam by měl být chytrý způsob, tam venku. Děkuji.

Upravit:

Děkuji za odpověď, Soonil. Případ jste řekl, se děje, když je činnost volána z okna nedávných aktivit. (Okno otevřel, když se dlouhým stisknutím tlačítka home) nicméně; To není pravda, když jej otevřete z domovské obrazovky. (Stejně jako otevření od startu) Nemyslím si, že můj kód má určitý problém generovat této chybě. Vzhledem k tomu, jsem vytvořil testovací projekt a snažil samostatně před odesláním na otázku a čelí stejnému problému. Tak či onak, tady je test kód:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle(MainActivity);

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle(ChildActivity);

    }
}
Položena 07/04/2009 v 08:04
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

EDIT : Našel řešení vašeho problému poněkud nahodile ještě dnes! Viz tento chybovou zprávu . Vysvětluje váš problém přesně. Důvod, proč jsem nemohl reprodukovat problém není nikdy jsem Eclipse spustit aplikaci přímo. Používám Eclipse nainstalovat aplikaci a pak ji spustit sám.


Jedná se již o výchozí chování pro aplikace Android, žádné speciální triky jsou zapotřebí k dosažení tohoto cíle. Divím se, že vaše aplikace není demonstruje toto chování. Každá aplikace Android udržuje stack činnost, doslova LIFO stoh aktivit. Tyto aktivity mohou být dále rozděleny do úkolů, ale 99% z světských aplikací nebude nikdy vědět nic o úkolech v mých zkušeností.

Když stisknete tlačítko domů, celá aplikace zásobník se vloží do pozadí. Zatímco v pozadí, může být zabit pro paměťové obav kdykoliv, ale pokud ne, kolik času uplyne, než je obnoven, to obvykle není zabit a nemusí být obnoven. Když se znovu vybrat aplikaci, zásobník (nebo přesněji řečeno, pouze vrchní položka ve frontě), je obnovena.

Pokud vaše aplikace není vykazující toto chování, mám podezření, že má co do činění s tím, jak spouštíte mainActivity a childActivity a veškeré další Intent příznaky může být pomocí. Je nějaká šance, můžete psát kód, který umístíte na tom, jak jste spuštění mainActivity a childActivity?

Odpovězeno 07/04/2009 v 15:50
zdroj uživatelem

hlasů
-1

Vrátil jsem se a zkouší se podobné žádosti, a to i když je proces vytlačována z paměti ChildActivity se rozpouští automaticky jak říká Soonil. Vidíš to v emulátoru nebo na skutečném zařízení?

Pokud spustíte aplikaci a sledovat logcat, měli byste vidět něco jako následující po spuštění App, otevřete ChildActivity a klepněte na položku Domů a poté zahájí svou činnost znovu:

Výchozí aktivita: Intent {akce = android.intent.action.MAIN kategorie = {android.intent.categroy.LAUNCHER} vlajky = ... comp = {com.yourpackagename.MainActivity}} Spuštění proc pro činnost yourpackagename.ChildActivity: pid = x uid = y GID = {} Zobrazené aktivita /.ChildActivity

Mohl byste post výstup Logcat pokud nechcete zobrazit chování, které očekáváte?

Odpovězeno 08/04/2009 v 13:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more