android程序退出功能解决方案——android完全退出

         android中打开的activity会被放入栈中,直到finish被调用或系统回收。因此有时候自己开发的程序在退出时会因为栈中activity没有清除而无法完全退出。

我感觉可以通过修改activity的启动模式来实现完全退出。

 

     首先,把主activity的启动模式改为single Task(如果在栈中已经有该Activity的实例(会调用实例的oNewwIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移出栈,如果栈中不存在该实例,将会创建新的实例放入栈中。),即:

                                  <activity
            android:label="@string/app_name"
            android:name=".SingleInstanceActivity" 
            android:launchMode="singleTask"             >

      然后,要退出时,先跳转到主activity中(移除栈中已经打开的除主activity之外的所有activity),在调用主activity的finish方法即可退出。为了区别是要返回主页还是要退出最好加一个区分参数,如:在intent中加一个flag,当为TRUE时表示要退出,当为false时表示要转到主页。

      注意:因为主activity是singleTast模式所以一定要重写onNewIntent方法(当栈中已存在该activity时不会再调用onCreate方法而调用onNewIntent方法),其中要有和onCreate方法中一样的退出代码。

 

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate() {
        setContentView(R.layout.main);
       
        boolean out=getIntent().getBooleanExtra("logout", false);
  if(out){
   this.finish();
  }
    }
   
   
 @Override
 protected void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  boolean out=intent.getBooleanExtra("logout", false);
  if(out){
   this.finish();
  }
 }    
   
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值