Android,双击回退键退出应用

BaseActivity.java
package com.example.buish.exitdemo;

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

public class BaseActivity extends AppCompatActivity {
    private Toast toast;
    private MyApplication myApplication;
    private long lastPressedTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myApplication = (MyApplication) getApplication();
        myApplication.addActivity(this);
    }

    @Override
    public void onBackPressed() {
        long currentPressedTime = System.currentTimeMillis();
        if (currentPressedTime - lastPressedTime > 3000) {
            if (toast == null)
                toast = Toast.makeText(this, "再次点击返回键退出应用", Toast.LENGTH_SHORT);
            toast.show();
            lastPressedTime = currentPressedTime;
        } else {
            toast.cancel();
            myApplication.finish();
        }
    }
}
MyApplication.java
package com.example.buish.exitdemo;

import android.app.Application;
import android.support.v7.app.AppCompatActivity;

import java.util.ArrayList;

public class MyApplication extends Application {
    private ArrayList<AppCompatActivity> activities = new ArrayList<>();

    public void addActivity(AppCompatActivity activity) {
        activities.add(activity);
    }

    public void finish() {
        for (int i = 0; i < activities.size(); ++i) {
            activities.get(i).finish();
        }
    }
}

AndroidManifest.xml

...
<application
    android:name=".MyApplication"
    ...
</application>
...

猜你喜欢

转载自www.cnblogs.com/buyishi/p/9609822.html