編輯:關於Android編程
在做項目的時候會碰到應用無法完全退出的問題,網上搜索了一下,比較流行的是將每個activity加到一個棧裡面,退出的時候清空這個棧。下面給出一個完整的類,包含相應的方法,需要用的時候直接調用即可。
在每個activity內實例化一個對象,然後通過addActivity()方法 將每個activity壓入到棧內。在需要退出的時候調用exit()方法
大家需要用的時候可以直接拷貝以下代碼,修改一下類名即可
比如我要將activity入棧只需要MyApplication.getInstance().addActivity(activity)
退出直接調用MyApplication.getInstance().exit()或其他方法
public class MyApplication extends Application { public ListmGetGoldCoinsFragments; public long mLoginTime; private static MyApplication instance; private static final String tag = "myApplication"; private static Context appContext; // 判斷Home Activity是否為Stop狀態 private final List activityList = new LinkedList(); private long mExitTime; public static MyApplication getInstance() { if (null == instance) { instance = new MyApplication(); } return instance; } /** * 添加Activity到容器中 * * @param activity */ public void addActivity(Activity activity) { activityList.add(activity); } /** * 遍歷所有的Activity並finish * * @param isDirectExit * isDirectExit 是否直接退出 */ public void exit(boolean isDirectExit) { if ((System.currentTimeMillis() - mExitTime) > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); } else { if (isDirectExit) { // 退出其它應用 for (Activity activity : activityList) { Log.i(tag, "activity.getPackageName(): " + activity.getPackageName()); if (!(activity.isFinishing())) { activity.finish(); } } activityList.clear(); // 停止日志服務 Log.d(tag, "stopping log srvice"); // 判斷sdk版本 int sdkVersion = Integer.parseInt(VERSION.SDK); if (sdkVersion >= 8) { android.os.Process.killProcess(android.os.Process.myPid()); } else { ActivityManager activityMgr = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); activityMgr.restartPackage(getPackageName()); } // 跳轉到桌面 Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); System.exit(0); } else { exit(); } } } /** * 遍歷所有的Activity並finish */ public void exit() { if ((System.currentTimeMillis() - mExitTime) > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); } else { // 退出其它應用 for (Activity activity : activityList) { Log.i(tag, "activity.getPackageName(): " + activity.getClassLoader().getClass().getName()); // if (!(activity.isFinishing())) { activity.finish(); // } } activityList.clear(); // 停止日志服務 Log.d(tag, "stopping log srvice"); // 判斷sdk版本 int sdkVersion = Integer.parseInt(VERSION.SDK); if (sdkVersion >= 8) { android.os.Process.killProcess(android.os.Process.myPid()); } else { ActivityManager activityMgr = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE); activityMgr.restartPackage(getPackageName()); } // 跳轉到桌面 Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); System.exit(0); } } /** * 返回桌面 */ public void backToHome() { // 跳轉到桌面 Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } /** * 從容器中刪除Activity * * @param activity */ public void removeActivity(Activity activity) { activityList.remove(activity); } /** * 清除所有Activity */ public void removeAllActivity() { // 退出其它應用 for (Activity activity : activityList) { Log.i(tag, "activity.getPackageName(): " + activity.getClassLoader().getClass().getName()); // if (!(activity.isFinishing())) { activity.finish(); // } } activityList.clear(); } /** * 判斷容器中是否存在這個Activity * * @param activity * @return */ public boolean isActivityContain(Activity activity) { return activityList.contains(activity); } @Override public void onCreate() { super.onCreate(); appContext = getApplicationContext(); } }
話不多說開弄:打開eclipse,左上角File=》New=》Android Application Projicet,如圖: Next,Next,Next,N
在res下新建一個文件夾,命名為anim,創建xml文件,例如創建了一個a1.xml //在這裡寫動畫 alpha:漸變透明度效果 rotate:旋轉動
在android項目中訪問網絡圖片是非常普遍性的事情,如果我們每次請求都要訪問網絡來獲取圖片,會非常耗費流量,而且圖片占用內存空間也比較大,圖片過多且不釋放的話很容易造成
寫在前面最近一直在做畢設項目的准備工作,考慮到可能要用到一個模糊的效果,所以就學習了一些高斯模糊效果的實現。比較有名的就是 FastBlur 以及它衍生的一些優化方案,還