Aktivität B geschlossen ist, weil es von Aktivität A gestartet, dann ist dies ein normales Verhalten für Android, weil Aktivität A neu gestartet werden muss (singleTask) und alle damit verbundenen Instanz wird töten/Ziel.
Also, was Sie tun können, implementieren Sie shared-preference.
Ihre Aktivität A so sein sollte:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//// read share preference
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger("MYSHARE_PRFERENCE");
int isOpened = sharedPref.getInt("IS_ACTIVITY_B_ALREADY_OPENED", defaultValue);
if (isOpened == 1)
{
//resume activity B
startActivity(new Intent(MainActivity.this, ActivityB.class));
}
////
findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, ActivityB.class));
//// write on share preference
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("IS_ACTIVITY_B_ALREADY_OPENED", 1);
editor.commit();
////
}
});
}
}
P. S: Ich habe es noch nicht kompilieren, könnte der Code-Fehler auf der Kompilierung sein. Aber Share Preference kann eine Lösung für Ihr Problem sein.
Sind Sie sicher, dass Sie finish() nicht in onPause()/onResume() - Methode in ActivityB aufrufen? –