2010-11-09 54 views
15

在应用程序运行时,我按HOME按钮关闭应用程序。当我再次启动应用程序时,它会在点击HOME之前显示的页面上继续。我希望应用程序从初始显示开始。我使用完成()完成活动,但它不工作。有什么建议么?如何销毁Android中的活动?

+0

你在哪里放置'finish()'? 在大多数情况下,按住home只会让活动暂停,除非Android需要紧急存储该内存。 – xandy 2010-11-09 08:15:10

+0

你没有向我们解释你在哪里使用finish()。 – cababunga 2010-11-09 08:20:16

+0

@Nikki:你可以发布代码,以便我们能够找到你在代码中做了什么错误? – 2010-11-09 08:26:26

回答

20

很可能你有几个相同活动的实例。要解决这类问题,请创建您自己的父级“活动”类,例如MyRootActivity将举行所有可用/活着的活动的静态列表:

public class MyRootActivity extends Activity 
{ 
    private static final String TAG=MyRootActivity.class.getName(); 
    private static ArrayList<Activity> activities=new ArrayList<Activity>(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     activities.add(this); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     activities.remove(this); 
    } 

    public static void finishAll() 
    { 
     for(Activity activity:activities) 
      activity.finish(); 
    } 
} 

对于所有的活动都需要被MyRootActivity的孩子。然后,当你准备确定你正在关闭你的应用程序时 - 只需调用MyRootActivity.finishAll();然后调用MyRootActivity.finishAll();然后调用MyRootActivity.finishAll();然后调用MyRootActivity.finishAll();}。

+0

private static ArrayList activities = new ArrayList ; 在我的代码导致错误... 令牌(S),错位构建体说语法错误 什么能振振有辞 – piku 2012-11-06 12:25:54

+2

@piku:我在同一条线上”同样的错误......新ArrayList ;“。我很确定它应该是“private static ArrayList activities = new ArrayList ();” - 看括号? – 2013-01-16 03:18:26

-2

尝试调用super.onPause()第一,后来打电话finish()onPause()存根

+0

这不是一个好主意,非常反模式设计。 – visc 2017-03-01 04:30:10

0

内创建一个静态的活动对象,活动结束的其他活动,这个IE中分配活动,你可以添加更多的活动

public class demoActivity extends AppCompatActivity { 
    public static Activity self_intent; 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.demo_activity); 
      selfintent=this; 
    } 

    //Other functions-------------- 
} 

做其他活动

在其他

public class finishingActivity extends AppCompatActivity { 
     public Button activityCloseBtn; 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.finishing_activity); 

      activityCloseBtn= (Button) view.findViewById(R.id.activity_close_btn); 
      activityCloseBtn.setOnClickListener(new View.OnClickListener() {  
      @Override 
      public void onClick(View v) { 
       demoActivity.selfintent.finish(); //for finish demoActivityactivity 

       //for other activities Activity.selfintent.finish(); 
       finish(); //for finish current activity 
      } 
    });