У меня есть приложение с несколькими действиями, например:
Действие 1 → Действие 2 → Действие 3 → Действие 4
И я хотел бы закрыть все действия из любой деятельности и вернуться на домашний телефон.
У меня есть приложение с несколькими действиями, например:
Действие 1 → Действие 2 → Действие 3 → Действие 4
И я хотел бы закрыть все действия из любой деятельности и вернуться на домашний телефон.
Вы можете добиться этого, используя BroadcastReceivers
:
BaseActivity
следующим образом:public class BaseActivity extends Activity {
private KillReceiver mKillReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mKillReceiver = new KillReceiver();
registerReceiver(mKillReceiver,
IntentFilter.create("kill", "spartan!!!"));
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mKillReceiver);
}
private final class KillReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
}
}
BaseActivity
.Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);
Вы можете очистить все предыдущие действия, используя следующие флаги:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
Надеюсь, это поможет вам!
Откройте AndroidManifest.xml и найдите действие, к которому вы хотите вернуться, и добавьте следующий атрибут
android:launchMode="singleTask"
Например, класс HomeActivity может иметь это в манифесте android
<activity android:name=".HomeActivity"
android:launchMode="singleTask"/>
В любой момент вы можете закрыть все действия поверх этого, используя стандартный startActivity, например
startActivity(new Intent(this, HomeActivity.class));
Если вы обычно передаете дополнительные функции в намерение, вам не нужно делать это, так как оно вернется в любом состоянии, которое было раньше, и оно даже сопровождается анимацией, например, нажатием кнопки "Назад".
И я хотел бы закрыть все действия из любой деятельности.
Это пользовательское враждебное поведение в Android. Пожалуйста, не делайте этого.
и вернуться на домашний телефон
Я понятия не имею, что это значит.
Если пользователь нажимает HOME, ваши действия могут и должны оставаться в ОЗУ на некоторое время, если пользователь вернется в ваше приложение.
Если по "домашнему телефону" вы подразумеваете, что одним из ваших действий является "домашний" приложение, и вы хотите вернуться к этому действию, когда пользователь нажимает кнопку какого-либо пункта или пункта меню, вызовите функцию startActivity() с помощью Намерение, что:
FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP
, чтобы указать, что вы хотите перенести это действие вперед и избавиться от других действий, которые ранее был запущен пользователь.