问题
I was wondering is it possible to create multiple instances of a single Activity in Android?
I currently start my own inCall screen for a Voip Test by using the following code:
public void initInCallScreen(String pName, String phoneNumber, int contactID, boolean
callDirection, int lineID){
//starts in callScreen dialog
final Intent myIntent = new Intent(context, CallDialogActivity.class);
myIntent.putExtra("NAME", pName);
myIntent.putExtra("NUMBER", phoneNumber);
myIntent.putExtra("ID", contactID);
myIntent.putExtra("CALLTYPE", callDirection); //True = Incoming, False = Outgoing
myIntent.putExtra("LINEID", lineID);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
This allows me to start the Activity fine.
However when I call it for a second it just returns to the Activity already created rather than creating a new Activity and placing it on the stack.
I would like to be able to create the activity multiple times so that I have two or 3 Activities on the stack and the user can switch between them, using Home, Back buttons etc...
Is this possible and if so what am I doing wrong?
回答1:
However when I call it for a second it just returns to the Activity already created rather than creating a new Activity and placing it on the stack.
You probably changed your manifest to add an android:launchMode
attribute that is interfering with your goal. By default, starting an activity starts a new instance.
Also:
- Get rid of
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
, since you do not want a new task based on what you have written here - Since
context
is probably aContext
, I do not know why you are going through all of theContextWrapper
/getBaseContext()
stuff
回答2:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
来源:https://stackoverflow.com/questions/3157596/android-how-to-create-multiple-instances-of-an-activity