Android退出应用方法 -- 使用Application退出

使用Application退出 :目前比较常用方法之一,我们都知道application是Android的系统组件,当应用程序启动时,会自动帮我们创建一个Application,而且一个应用程序只能存在一个Application,它的生命周期也是最长的,如果需要使用自己创建的Application时,这个时候我们只需要在Androidmanifest.xml中的<Application> 标签中添加name属性:把创建的Application完整的包名+类名放进了就行了。

那么我们如何使用Application来退出当前的应用程序呢?

我们来看下我写的一个使用Application来退出应用程序的Demo:

<创建一个继承Application的类>

import android.app.Activity;
import android.app.Application;

import java.util.ArrayList;
import java.util.List;

public class myApplication extends Application {
    private List<Activity> oList;//用于存放所有启动的Activity的集合

    public void onCreate() {
        super.onCreate();
        oList = new ArrayList<Activity>();
    }

    /**
     * 添加Activity
     */
    public void addActivity_(Activity activity) {
// 判断当前集合中不存在该Activity
        if (!oList.contains(activity)) {
            oList.add(activity);//把当前Activity添加到集合中
        }
    }

    /**
     * 销毁单个Activity
     */
    public void removeActivity_(Activity activity) {
//判断当前集合中存在该Activity
        if (oList.contains(activity)) {
            oList.remove(activity);//从集合中移除
            activity.finish();//销毁当前Activity
        }
    }

    /**
     * 销毁所有的Activity
     */
    public void removeALLActivity_() {
        //通过循环,把集合中的所有Activity销毁
        for (Activity activity : oList) {
            activity.finish();
        }
    }
}

<创建BaseActivity 继承 Activity> 用于管理所有的Activity,所有的Activity都继承这个类>

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class BaseActivity extends AppCompatActivity {
    private myApplication application;
    private BaseActivity oContext;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (application == null) {
            // 得到Application对象
            application = (myApplication) getApplication();
        }
        oContext = this;// 把当前的上下文对象赋值给BaseActivity
        addActivity();// 调用添加方法
    }

    // 添加Activity方法
    public void addActivity() {
        application.addActivity_(oContext);// 调用myApplication的添加Activity方法
    }

    //销毁当个Activity方法
    public void removeActivity() {
        application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
    }

    //销毁所有Activity方法
    public void removeALLActivity() {
        application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
    }
}

<MainActivity 继承 BaseActivity 主界面---双击返回键,退出当前应用程序


public class MainActivity extends BaseActivity {

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

        //绑定按钮
public void button(View v) {

  startActivity(new Intent(MainActivity.this, oneActivity.class));//跳转到oneActivity
}
//重写onKeyDown方法
public boolean onKeyDown(int keyCode, KeyEvent event) {

    //判断当点击的是返回键
    if (keyCode == event.KEYCODE_BACK) {
exit();//退出方法
    }
    return true;
}

private long time = 0;

//退出方法
private void exit() {
//如果在两秒大于2秒
if (System.currentTimeMillis() - time > 2000) {
//获得当前的时间
time = System.currentTimeMillis();
showToast("再点击一次退出应用程序");
} else {
//点击在两秒以内
removeALLActivity();//执行移除所以Activity方法
}


}


< androidmanifest.xml 清单文件>

<application
        android:name="com.jxsw.chong.application_closeactivity.myApplication" //注册myapplication
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.jxsw.chong.application_closeactivity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.jxsw.chong.application_closeactivity.BaseActivity" />

</application>

    我们让每个Activity都继承于我们自己定义的BaseActivity,每次新开启个Activity,就会在BaseActivity的oncreate()方法中就会执行addActivity()方法,方法里面执行的是myApplication类中添加Activity的方法,把当前的Activity放进集合中,当连续点击两次back返回键,执行销毁所有Activity的方法。从而达到完全退出应用程序的效果。

ps:一定不要忘记在androidmanifest.xml中注册myApplication


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值