Как уничтожить активность в Android?
Пока приложение запущено, я нажимаю кнопку HOME, чтобы закрыть приложение. Когда я снова запустил приложение, он возобновится на странице, отображаемой до нажатия на HOME. Я хочу, чтобы приложение начиналось с начального отображения. Я использовал финиш(), чтобы завершить работу, но она не работает. Любые предложения?
Ответы
Ответ 1
Скорее всего, у вас есть несколько экземпляров одного и того же действия. Чтобы устранить подобные проблемы, создайте собственный родительский класс активности, например. MyRootActivity, который будет содержать статический список всех доступных/живых действий:
public class MyRootActivity extends Activity
{
private static final String TAG=MyRootActivity.class.getName();
private static ArrayList<Activity> activities=new ArrayList<Activity>();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
activities.add(this);
}
@Override
public void onDestroy()
{
super.onDestroy();
activities.remove(this);
}
public static void finishAll()
{
for(Activity activity:activities)
activity.finish();
}
}
Для этого все ваши действия должны быть детьми MyRootActivity.
Затем, когда вы будете уверены, что закрываете приложение - просто позвоните MyRootActivity.finishAll();
Ответ 2
Создайте объект статической активности, действие которого завершается для другого действия и назначает действие в этом случае вы можете добавить дополнительные действия
public class demoActivity extends AppCompatActivity {
public static Activity self_intent;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_activity);
selfintent=this;
}
//Other functions--------------
}
делать то же самое для других действий
на других
public class finishingActivity extends AppCompatActivity {
public Button activityCloseBtn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.finishing_activity);
activityCloseBtn= (Button) view.findViewById(R.id.activity_close_btn);
activityCloseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
demoActivity.selfintent.finish(); //for finish demoActivityactivity
//for other activities Activity.selfintent.finish();
finish(); //for finish current activity
}
});
Ответ 3
попробуйте позвонить super.onPause()
первым и последующим вызовам finish()
внутри вашего onPause()
заглушки