Intent intent = new Intent(B_Activity.this, C_Activity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 这样吗?试了下不行,不过跳转到C后用上面的代码跳回A可以实现关闭B,C,但是直接从B跳到C不能关闭A和B有点晕
在B到C的时候,把B finish()了就可以了吧!
但是A还在, B到C的时候要把B和A都finish掉
当开始 C Activity 时,使用 FLAG_ACTIVITY_CLEAR_TOP 来清除 Activity A 和 B 中的 backStack : intent = new Intent(context,C.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
2: 试试这样, 在A&B的onCreate方法里注册Intent, 在C启动的时候,A&B的onDestroy()并没有被调用, 这时在C中, send 在A&B里注册的Intent, 让A&B接收并自己退出。
你的意思是用广播来做,跳转到C时像A和B发广播finish掉自己吗?
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
这样吗?试了下不行,不过跳转到C后用上面的代码跳回A可以实现关闭B,C,但是直接从B跳到C不能关闭A和B有点晕
B到C的时候要把B和A都finish掉
intent = new Intent(context,C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
用result试下了。在a-b时启动startresult,b-c时finish掉b,finish之前setresult给a。太扯了这么搞。你要实现怎样的东西,需要这样操作?
public static A instance;
然后在C上面写:
A.instance.finish();
写一个类继承Application类,用来管理Activity的List,可以实现一次关闭多个Activitypublic class CustomApplication extends Application {
/** 保存所有已创建的Activity */
private List<Activity> activities; @Override
public void onCreate() {
super.onCreate();
init(); } public void init() {
/** 初始化 */
if (activities == null) {
activities = new Vector<Activity>();
}
} /** 将Activity加入 */
public synchronized void register(Activity activity) {
activities.add(activity);
} /** Activity被销毁时,从Activities中移除 */
public synchronized void unregister(Activity activity) {
if (activities.size() != 0) {
activities.remove(activity);
if (!activity.isFinishing()) {
activity.finish();
}
}
} /**
* 移除当前所有已创建的Activiy, 并逐个销毁
*/
public synchronized void removeAll() {
if (activities.size() != 0) {
Activity activity = null;
Iterator<Activity> iterator = activities.iterator();
while (iterator.hasNext()) {
activity = iterator.next();
if (!activity.isFinishing()) {
activity.finish();
iterator.remove();
}
}
}
} /**
* 跳转到C页面
*/
public static void intent2C(CustomApplication app, Context ctx) {
app.removeAll();
System.gc(); Intent intent = new Intent(ctx, CActivity.class);
ctx.startActivity(intent);
}
}
把需要被管理的Activity加到list里面protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
CustomApplication app = (CustomApplication) getApplication();
app.register(this);
}Manifest里面application标签下加个name属性就OK了<application
android:name="test.xxx.CustomApplication"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
http://developer.android.com/design/patterns/navigation.html#up-vs-back
http://developer.android.com/design/patterns/navigation.html#up-vs-back