To, co udało mi się zrobić w przeszłości, to stworzyć niewidoczna działalność jako główna działalność. Nigdy nie jest pokazywany użytkownikowi, ponieważ uruchamia "poprawną" aktywność w konstruktorze.
Z tego powodu nie ma potrzeby, aby temat działania był "niewidoczny", ponieważ nie ładuje widoku.
Wewnątrz I umieszczam pewną logikę, która określa, która czynność ma zostać wyświetlona użytkownikowi. Działa to idealnie w moim przypadku użycia - spróbuj.
Deklaracja Manifest (nota parametr noHistory="true"
):
<activity
android:name=".activity.EntryActivity"
android:launchMode="singleInstance"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Uwaga: Jak wskazano out in comments below ustawienie launchmode nie ma związku z tym pytanie IIRC. Było to związane z różnymi sposobami, w jakie zainicjowano EntryActivity.
klasa EntryActivity:
public class EntryActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// launch a different activity
Intent launchIntent = new Intent();
Class<?> launchActivity;
try
{
String className = getScreenClassName();
launchActivity = Class.forName(className);
}
catch (ClassNotFoundException e)
{
launchActivity = DefaultHomeActivity.class;
}
launchIntent.setClass(getApplicationContext(), launchActivity);
startActivity(launchIntent);
finish();
}
/** return Class name of Activity to show **/
private String getScreenClassName()
{
// NOTE - Place logic here to determine which screen to show next
// Default is used in this demo code
String activity = DefaultHomeActivity.class.getName();
return activity;
}
}
Jaki jest cel 'android: launchMode =" singleInstance "' w tym przypadku ? Gdy to uwzględniam, żadna z kolejnych czynności w mojej aplikacji nie pojawia się w historii (moja aplikacja nie jest obecna na liście Ostatnie aplikacje). Kiedy jednak wykluczyłem tę linię, wszystko wydaje się działać zgodnie z oczekiwaniami. – jokeefe
@jokeefe IIRC to część kodu produkcyjnego, który zostawiłem, kiedy go wyrwałem, aby odpowiedzieć na pytanie. Myślę, że masz rację - nie trzeba odpowiadać na pytanie. W moim przypadku miało to związek z różnymi sposobami uruchamiania tego "EntryActivity" ... –
Dobra. Miałem nadzieję, że niczego nie przeoczyłem. Dziękuję za to, że do mnie wróciłeś! – jokeefe