退出程序個人認爲也沒什麼必要,其實都是產品閒的蛋疼沒事幹弄的一些沒用的功能。很多產品根本不需要這個功能。不過既然用到了,感覺還是得簡單的說一下。
這裏網上搜了很多,雙擊退出的,感覺基本沒用,只是在你程序運行的首頁,也就是你app的主操作界面有點用途。在你主操作界面的時候雙擊退出你的程序,其實也不是什麼退出,只是返回桌面了。
還有一種是點擊退出登錄,直接將你的app的activity全部finish掉,還是退到桌面。其實說白了,感覺有點欺騙客戶的感覺。
雖然我特別想嚴謹點,但是這個東西我找尋了半天也沒什麼結果。個人能力確實不行。
就假的退出程序說說吧。
類似單例的,原理很簡單,將你要finish的activity全部add到一個list中,然後點退出的時候,把list裏面的 activity全部remove掉。
public class Back extends Application{ private List<Activity> activityList = new LinkedList<Activity>(); private static Back instance; private Back(){} //單例模式獲取唯一的Back public static Back getInstance(){ if(null==instance){ instance=new Back(); } return instance; } //添加activity到容器中 public void addActivity(Activity activity){ activityList.add(activity); } //遍歷所有的Activiy並finish public void exit(){ for(Activity activity:activityList){ activity.finish(); } System.exit(0); } }
代碼粘貼一下吧。
說道這裏就又想多插入一個小內容了。
退出的話,我們進來是要重新進行登錄的嘛,但是一般的app我們都會保存登錄的信息,這樣方便用戶。
所以,退出登錄的時候,最好是把我們的sharedpreference也清空了。
如下:
/** * 刪除方法 這裏只會刪除某個文件夾下的文件,如果傳入的directory是個文件,將不做處理 * * @param directory */ private static void deleteFilesByDirectory(File directory) { if (directory != null && directory.exists() && directory.isDirectory()) { for (File item : directory.listFiles()) { item.delete(); } } }
然後使用的時候:
//清除緩存的方法 deleteFilesByDirectory(new File("/data/data/" + getApplicationContext().getPackageName() + "/shared_prefs")); Back.getInstance().exit();
好啦好啦,感覺廢話說很多了,就這啦。