Je fais une application d'alarme. J'ai 3 Activités: Main
, Alarm
, Game
.Comment chaîner correctement des activités avec de nouvelles tâches?
Ils sont déclarés dans le manifeste:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="sensorPortrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".Alarm"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
/>
<activity
android:name=".Game"
android:excludeFromRecents="true"
android:label="@string/search_word"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
/>
activité Alarm
est appelée à partir broadcastreciever:
Intent i = new Intent(context, NotificationActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Ou du `onBackPressed du jeu:
if (!test) {
Intent i = new Intent(mContext, NotificationActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
finish();
activité Game
est appelée à partir d'alarme activité de manière similaire:
i = new Intent(this, BubblePopActivity.class);
i.putExtras(b);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
Il n'y a aucun appel interne à l'activité Main
.
Behaiviour Je Tring à atteindre:
1) Activités Alarm
et Game
doivent figurer sur les deux lockscreen nad déverrouillé verrouillé avec la broche, le motif grafical et ainsi de suite. Il travaille avec drapeaux decrared dans des activités, ce qui exige FLAG_NEW_TASK dans l'intention
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_bgame);
2) Retour bouton doit conduire de Game
activité à Alarm
activité 3) Si home
est pressé, alors que Alarm
ou Game
activité est au-dessus de pile, l'icône lanceur devrait les rouvrir, mais pas le Main
, tant que ces activités ne sont pas terminées par la logique de l'application.
Alors que 1) et 2) fonctionne flowlesly, 3) fonctionne occasionnellement. Parfois, il retourne à Game
de Alarm
comme il se doit. Il semble que si ces activités ont été détruites par le système en raison d'un manque de ressources, l'icône du lanceur mènera à l'activité Main
.
Comment puis-je implémenter la logique désirée?