Android学习之---双击back退出app

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/qq_34291777 https://blog.csdn.net/qq_34291777/article/details/71404588

Android学习之双击back退出app

1 .
这里写图片描述
MainAcivity布局
2 . MainActivity.java

package com.example.administrator.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.Date;

public class MainActivity extends AppCompatActivity {
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("note:","onCreate");
        btn1 = (Button) findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });
    }}

3 . Main2Activity

package com.example.administrator.myapplication;

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

import java.util.Date;

public class Main2Activity extends AppCompatActivity {
    Button btn;
    boolean isExit = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

    }

    long lastPressTime = 0;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //return super.onKeyDown(keyCode, event);

        if (keyCode == KeyEvent.KEYCODE_BACK) {

            if (isExit == false) {
                isExit = true;
                Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();

            } else {
                Toast.makeText(this, "退出应用程序", Toast.LENGTH_SHORT).show();
                //System.exit(0);
                android.os.Process.killProcess(android.os.Process.myPid());
            }
        }
        return true;

    }
}

   /* @Override
    public void onBackPressed() {
        super.onBackPressed();
        if (new Date().getTime() - lastPressTime < 1000) {
            finish();//结束程序
            System.exit(0);
        } else {
            lastPressTime = new Date().getTime();//重置lastPressTime
            Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
            System.exit(0);
        }

    }*/

3 . 发现没有效果,没有退出程序


—–改进

4 .新建Application 的子类Myapplicatio类

package com.example.administrator.myapplication;

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

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

/**
 * Created by Administrator on 2017/5/8.
 */

public class Myapplication extends Application {
    public static Myapplication instance;
    private List<Activity> activities = new ArrayList<Activity>();

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

    public static Myapplication getInstance(){
        if(null==instance){
            instance=new Myapplication();
        }
        return instance;
    }

    @Override
    public void onTerminate() {
        //    super.onTerminate();

        for (Activity activity : activities) {
            activity.finish();
        }



        System.exit(0);
        //     int nPid = android.os.Process.myPid();
        //   android.os.Process.killProcess(nPid);
    }
}

5 . 添加到AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:name=".Myapplication"
        >
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main2Activity"></activity>
    </application>

</manifest>

6 . MainActivity.java中添加

 package com.example.administrator.myapplication;

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    import java.util.Date;

    public class MainActivity extends AppCompatActivity {
        Button btn1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Myapplication.getInstance().addActivity(this);//刚添加
            Log.i("note:","onCreate");
            btn1 = (Button) findViewById(R.id.btn1);
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                    startActivity(intent);
                }
            });
        }
        }


7 . Main2Activity.java
```java

package com.example.administrator.myapplication;

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

import java.util.Date;

public class Main2Activity extends AppCompatActivity {
    Button btn;
    boolean isExit = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        Myapplication.getInstance().addActivity(this);

    }

    long lastPressTime = 0;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //return super.onKeyDown(keyCode, event);

        if (keyCode == KeyEvent.KEYCODE_BACK) {

            if (isExit == false) {
                isExit = true;
                Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();

            } else {
                Toast.makeText(this, "退出应用程序", Toast.LENGTH_SHORT).show();
                //System.exit(0);
                //android.os.Process.killProcess(android.os.Process.myPid());
                Myapplication.getInstance().onTerminate();
            }
        }
        return true;

    }
}

   /* @Override
    public void onBackPressed() {
        super.onBackPressed();
        if (new Date().getTime() - lastPressTime < 1000) {
            finish();//结束程序
            System.exit(0);
        } else {
            lastPressTime = new Date().getTime();//重置lastPressTime
            Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
            System.exit(0);
        }

    }*/


8 .这样就实现的双击退出app

猜你喜欢

转载自blog.csdn.net/qq_34291777/article/details/71404588