您的位置:首页 > 其它

安卓Activity的退出应用程序

2017-06-17 20:42 239 查看
退出应用程序

<1>递归退出

<2>栈退出

<3>报错(解决,对话框)

主界面

<1>点击返回键,弹出退出的对话框

<2>双击两次返回键,退出

1.《递归退出》

java代码

finish()与System.exit()退出的区别:

finish()会调用onDestroy(),而System.exit()不会

public void exit(View view){
// finish();
System.exit(0);

}


2.栈退出

在java里new一个包,再写一个java文件(MyApplication)
public class MyApplication extends Application {

private List<Activity> activities=new ArrayList<>();

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

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

}


BActivity.java代码

里面调用MyApplication中的退出程序的方法
public void exit(View view){
// finish();
// System.exit(0);
myApplication.exit();
}


MainActivity.java里面的代码

public void exit(View view){

myApplication.exit();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
exit(null);
}


<1>点击返回键,弹出退出的对话框

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_UP){
long secondTime=System.currentTimeMillis();
if(secondTime-firstTime>2000){
Toast.makeText(myApplication, "再按一次退出程序", Toast.LENGTH_SHORT).show();
firstTime=secondTime;
return true;
}else{
System.exit(0);
}
}

return super.onKeyUp(keyCode, event);
}


<2>双击两次返回键,退出


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//点击返回键
if (keyCode==KeyEvent.KEYCODE_BACK){
//声明弹出对象并初始化
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("提示:");
builder.setMessage("是否退出?");
//设置按钮
builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
//设置取消按钮
builder.setPositiveButton("取消",null);
//显示弹窗
builder.show();
}
return super.onKeyDown(keyCode, event);
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: