在b调用c的语句 startactivity 之后调用finish 
activity b 就自己finish掉了
在启动activity c的过程中用handler 通知a finish

解决方案 »

  1.   

    a到b  在跳转的时候直接跟一句 
    a.finish() ,
    然后再starActivity(B),
    我就这么干的,界面跳转的时候直接把本Activity结束掉
      

  2.   

    其实,可以更直接的消除activity的,因为Android中是以Activity栈的形式来管理activity的,在androidmanifast.xml文件中配置activity时,launchMode属性时属性值写SingleInstance模式,这样一个activity栈就一个activity实例,不需要考虑activity有没有结束,因为Activity栈中每次只能有一个activity实例,a和b和c分别在不同的栈里,互不影响
      

  3.   

    采用广播的方式:
    可以在a和b的onCreate中动态注册一个相同的action广播,启动c后发送这个action的广播,
    a和b收到广播后再finish掉自己。
      

  4.   

    使用Application
    声明一个Acitivity的列表
    private List<Activity> activityList = new LinkedList<Activity>();
    每次调用activity时,都传入application的activityList里
    最后统一销毁
    // 遍历所有Activity finish
    public void delete()
    {
    for (Activity activity : activityList)
    {
    activity.finish();
    }
    if (activityList.size() == 0)
    activityList.clear();
    }
      

  5.   

    封装一个APPManger类,用单例模式,确保只有一个activity实例即可
      

  6.   

    可以在Application类中维护一个activity的列表,进入一个activity就添加一个activity的引用,finish一个Activity就remove掉一个activity的引用,如果要全部finish,就将列表中的Activity全部finish。
      

  7.   

    我刚遇到过这种问题,按照你的方法使用了,但是没有效果,我先描述下我的做法,
    a启动b,b启动c,c启动d,我想退出d后直接退出程序,而不是返回到c,我在d中启动一个service,这个service中实现发送一个关闭activity的广播,然后让a,b,c在onResume中注册这个广播,但是运行后发现从d按返回键仍然会回到c,c中的onRecieve()并没有执行,这是为什么呢?求指点
      

  8.   

    在你第一个Activity1中:Intent intent=new Intent(getApplication(),Activity2.class);
    startActivity(intent);
    finish():这样就OK了
      

  9.   

    1、每次开启一个activity时,把当前的activity finish掉
    2、在开启另一个activity的时候,设置flag,intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)