2013-02-21 9 views
9

Mam aplikację, która ma dwie czynności. Pierwszy jest prezentowany za pomocą jednego przycisku, który otwiera drugi.Problemy z półprzezroczystym motywem

Oto definicja Manifiest do pierwszego:

<activity 
    android:name="com.example.buttonexample.MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Druga działalność:

<activity 
    android:name="com.example.buttonexample.MainActivity2" 
    android:label="@string/title_activity_main_activity2" android:theme="@android:style/Theme.Translucent"> 
</activity> 

Oto jak uruchomić drugą aktywność (przez OnClickListener dla przycisku na pierwszym aktywności) :

public void startSecondActivityClick(View v) { 
    Intent startActivity2 = new Intent(this, MainActivity2.class); 
    startActivity(startActivity2); 
} 

działa to dobrze, jednak kiedy w tle aplikację trafiając ho ja i pierwszoplanowa aplikacja. Zauważam, że pierwszą czynnością jest nieustanne tworzenie/niszczenie samego siebie. I to zweryfikowane poprzez umieszczenie kodu w metodzie onDestory do zwiększania static int:

private static int count = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    count++; 

} 

protected void onDestroy() { 
    super.onDestroy(); 
    Log.i("MainActivity", String.format("Destroyed, %d", count)); 
} 

Zauważyłem również, że usunięcie półprzezroczystego motyw wydaje się to naprawić. Moje pytanie brzmi: czy istnieje sposób na półprzezroczyste lub coś podobnego, ale czy też nie można go ponownie uruchomić? Jestem też ciekawy, dlaczego tak się dzieje. Testuję to na 4.0.1 ICS na galaktyce SIII.

+0

Co masz na myśli, że ciągle się tworzy i niszczy? Czy masz na myśli to, że tworzy on i niszczy wiele razy, gdy drugi raz oglądasz tylko tę aktywność? Czy możesz podać przykładowy wynik Log? – spierce7

+0

Chodzi mi o to, że onCreate i onDestroy są wywoływane w krótkim odstępie czasu. Dodam dane wyjściowe dziennika. – noahd

+3

Ok po kilku kopaniu udało mi się dowiedzieć, dlaczego tak się dzieje. Ktoś włączył jedną z opcji programisty "nie zachowuj aktywności". Po wyłączeniu tego przestało się dziać. Podejrzewam, że to nie zdarza się zbyt często w produkcji, ponieważ większość ludzi prawdopodobnie nie ma tego ustawienia. – noahd

Odpowiedz

0

Ok po kilku kopaniu udało mi się dowiedzieć, dlaczego tak się dzieje. Ktoś włączył jedną z opcji programisty "nie zachowuj aktywności". Po wyłączeniu tego przestało się dziać. Podejrzewam, że to nie zdarza się zbyt często w produkcji, ponieważ większość ludzi prawdopodobnie nie ma tego ustawienia. Możesz znaleźć to w ustawieniach -> "opcje dla programistów" na większości telefonów.