Android中再按一次退出和完美退出整个应用程序

Posted Flyzend

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中再按一次退出和完美退出整个应用程序相关的知识,希望对你有一定的参考价值。

当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 

第一种方法:首先获取当前进程的id,然后杀死该进程。 (建议使用) 
android.os.Process.killProcess(android.os.Process.myPid()) 

第二种方法:终止当前正在运行的Java虚拟机,导致程序终止 
System.exit(0); 

第三种方法:强制关闭与该包有关联的一切执行 
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
manager.restartPackage(getPackageName());

<uses-permission android:name="android.permission.RESTART_PACKAGES" />

 

用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dialog中的按钮。个人觉得“再按一次返回键退出程序”是best practice,实现也很简单,直接上代码:

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN)   
        if((System.currentTimeMillis()-exitTime) > 2000)  
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();                                
            exitTime = System.currentTimeMillis();   
         else 
            finish();
            System.exit(0);
        
        return true;   
    
    return super.onKeyDown(keyCode, event);

Android 怎么退出整个应用程序?

我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。


网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

附代码:

import java.util.LinkedList; 
import java.util.List; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Application; 
import android.content.DialogInterface; 
import android.content.Intent; 
 
public class SysApplication extends Application  
    private List<Activity> mList = new LinkedList<Activity>(); 
    private static SysApplication instance; 
 
    private SysApplication()    
     
    public synchronized static SysApplication getInstance()  
        if (null == instance)  
            instance = new SysApplication(); 
         
        return instance; 
     
    // add Activity  
    public void addActivity(Activity activity)  
        mList.add(activity); 
     
 
    public void exit()  
        try  
            for (Activity activity : mList)  
                if (activity != null) 
                    activity.finish(); 
             
         catch (Exception e)  
            e.printStackTrace(); 
         finally  
            System.exit(0); 
         
     
    public void onLowMemory()  
        super.onLowMemory();     
        System.gc(); 
      


 //在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)如:


public void onCreate(Bundle savedInstanceState)

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this); 

以上是关于Android中再按一次退出和完美退出整个应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Android中点击物理返回按键(再按一次退出程序)

android 再按一次退出(笔记)

IT/Android解决方案相关问题解决方案汇总

IT/Android解决方案相关问题解决方案汇总

Android开发 从多个Activity返回到第一个Activity时如何实现“再按一次退出程序”

再按一次退出程序的实现