Android学习之双击back退出app
1 .
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