本文實例講述了Android開發(fā)之Activity管理工具類。分享給大家供大家參考,具體如下:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、臺前網(wǎng)站維護、網(wǎng)站推廣。
這個工具類是對Activity的一些管理,非常適用
package com.maobang.imsdk.util; import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.ImageView; import android.widget.ListView; /** * Activity管理類 * Created by Administrator on 2016/11/24. */ public class ActivityPageManager { private static Stack<Activity> activityStack; private static ActivityPageManager instance; /** * constructor */ private ActivityPageManager() { } /** * get the AppManager instance, the AppManager is singleton. */ public static ActivityPageManager getInstance() { if (instance == null) { instance = new ActivityPageManager(); } return instance; } /** * add Activity to Stack */ public void addActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * remove Activity from Stack */ public void removeActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.remove(activity); } /** * get current activity from Stack */ public Activity currentActivity() { Activity activity = activityStack.lastElement(); return activity; } /** * finish current activity from Stack */ public void finishActivity() { Activity activity = activityStack.lastElement(); finishActivity(activity); } /** * finish the Activity */ public void finishActivity(Activity activity) { if (activity != null) { activityStack.remove(activity); activity.finish(); activity = null; } } /** * finish the Activity */ public void finishActivity(Class<?> cls) { for (Activity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * finish all Activity */ public void finishAllActivity() { if(activityStack!=null&&activityStack.size()>0) { for (int i = 0, size = activityStack.size(); i < size; i++) { if (null != activityStack.get(i)) { activityStack.get(i).finish(); } } activityStack.clear(); } } /** * release all resourse for view * @param view */ public static void unbindReferences(View view) { try { if (view != null) { view.destroyDrawingCache(); unbindViewReferences(view); if (view instanceof ViewGroup){ unbindViewGroupReferences((ViewGroup) view); } } } catch (Throwable e) { // whatever exception is thrown just ignore it because a crash is // always worse than this method not doing what it's supposed to do } } private static void unbindViewGroupReferences(ViewGroup viewGroup) { int nrOfChildren = viewGroup.getChildCount(); for (int i = 0; i < nrOfChildren; i++) { View view = viewGroup.getChildAt(i); unbindViewReferences(view); if (view instanceof ViewGroup) unbindViewGroupReferences((ViewGroup) view); } try { viewGroup.removeAllViews(); } catch (Throwable mayHappen) { // AdapterViews, ListViews and potentially other ViewGroups don't // support the removeAllViews operation } } @SuppressWarnings("deprecation") private static void unbindViewReferences(View view) { // set all listeners to null (not every view and not every API level // supports the methods) try { view.setOnClickListener(null); view.setOnCreateContextMenuListener(null); view.setOnFocusChangeListener(null); view.setOnKeyListener(null); view.setOnLongClickListener(null); view.setOnClickListener(null); } catch (Throwable mayHappen) { } // set background to null Drawable d = view.getBackground(); if (d != null){ d.setCallback(null); } if (view instanceof ImageView) { ImageView imageView = (ImageView) view; d = imageView.getDrawable(); if (d != null){ d.setCallback(null); } imageView.setImageDrawable(null); imageView.setBackgroundDrawable(null); } // destroy WebView if (view instanceof WebView) { WebView webview = (WebView) view; webview.stopLoading(); webview.clearFormData(); webview.clearDisappearingChildren(); webview.setWebChromeClient(null); webview.setWebViewClient(null); webview.destroyDrawingCache(); webview.destroy(); webview = null; } if (view instanceof ListView) { ListView listView = (ListView) view; try { listView.removeAllViewsInLayout(); } catch (Throwable mayHappen) { } ((ListView) view).destroyDrawingCache(); } } /** * exit System * @param context */ public void exit(Context context) { exit(context, true); } /** * exit System * @param context * @param isClearCache */ @SuppressWarnings("deprecation") public void exit(Context context, boolean isClearCache) { try { finishAllActivity(); if(context != null){ ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); activityMgr.restartPackage(context.getPackageName()); } // if(isClearCache){ // LruCacheManager.getInstance().evictAll(); // CacheManager.clearAll(); // } System.exit(0); android.os.Process.killProcess(android.os.Process.myPid()); } catch (Exception e) { e.printStackTrace(); } } }
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android視圖View技巧總結(jié)》、《Android文件操作技巧匯總》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
網(wǎng)站題目:Android開發(fā)之Activity管理工具類完整示例
網(wǎng)址分享:http://vcdvsql.cn/article12/pehogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、域名注冊、商城網(wǎng)站、網(wǎng)站建設(shè)、軟件開發(fā)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)