解决方案 »

  1.   

    1: 这个需求很无聊。
    2: 试试这样, 在A&B的onCreate方法里注册Intent, 在C启动的时候,A&B的onDestroy()并没有被调用, 这时在C中, send 在A&B里注册的Intent, 让A&B接收并自己退出。 
      

  2.   


    你的意思是用广播来做,跳转到C时像A和B发广播finish掉自己吗?
      

  3.   

    对, 让A和B来接收Intent, 收到后自己退。
      

  4.   

    不能在跳转到c的时候加个clear top的flag吗???
      

  5.   

    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有点晕
      

  6.   

    在B到C的时候,把B finish()了就可以了吧!
      

  7.   

    但是A还在,
    B到C的时候要把B和A都finish掉
      

  8.   

    当开始 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);
      

  9.   


    用result试下了。在a-b时启动startresult,b-c时finish掉b,finish之前setresult给a。太扯了这么搞。你要实现怎样的东西,需要这样操作?
      

  10.   

    可以在A B两个Activity上面写:
    public static A instance;
    然后在C上面写:
    A.instance.finish();
      

  11.   

    我记得activity也有一个有关manager的类,可以用那个管理多个activity,可以实现楼主的需求。
      

  12.   

    B要跳转C的时候,不从B中跳转,从A中跳转。B先finish掉自己,带返回值的那种,然后A收到以后跳转C,同时finish掉自己
      

  13.   

    B启动C的时候,也启动A。设置一个action。在A的代码里判断下action直接退出,没试,但觉得行
      

  14.   


    写一个类继承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" >
      

  15.   

    这里有完整的解决方案:
    http://developer.android.com/design/patterns/navigation.html#up-vs-back
      

  16.   

    可以使用ActivityGroup来实现你想要的效果。
      

  17.   

    支持19楼这里完整的解决方案:
    http://developer.android.com/design/patterns/navigation.html#up-vs-back