1. 程式人生 > >Android學習之---雙擊back退出app

Android學習之---雙擊back退出app

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