/** * 文 件 名: MT_RestoreController.java * 描 述: * 版 权: Copyright (c)20010-2011 motone All Rights Reserved. * 公 司: 摩通科技 * 作 者: 邓丽霞 * 版 本: 1.0 * 创建时间: 2011-4-14 * * 修改历史: * 时间 作者 版本 描述 * ------------------------------------------------------------------ * 2011-4-14 邓丽霞 1.0 1.0 Version */ package com.mogoo.launcher2.restore; import java.util.ArrayList; import java.util.HashMap; import android.content.Context; public class Mogoo_RestoreController { //private static MT_RestoreController mController = null; private static HashMap<String,ArrayList<String>> mPolicyList = null; private Context context; public Mogoo_RestoreController(Context context) { this.context = context; } /* * Function: loadPolicy * Description: 程序启动时,导入xml异常恢复机制 * Context ctx 设备上下文 * Return: void */ public void loadPolicy() { try { /* if(mPolicyList == null) { mPolicyList = new HashMap<String,ArrayList<String>>(); } AssetManager assetManager = context.getAssets(); InputStream inputStream = assetManager.open("restore_policy.xml"); MT_SaxParserService saxService = new MT_SaxParserService(inputStream,"exception","class"); mPolicyList = saxService.getDataList();*/ Mogoo_ParserPolicy parsePolicy = Mogoo_ParserPolicy.getInstance(); mPolicyList = parsePolicy.getPolicyList(context); } catch(Exception e) { e.printStackTrace(); } } /* * Function: clear * Description: 清除列表数据 * 在 Launcher finish中调用 * input void * Return: void */ public void clear() { if(mPolicyList != null){ mPolicyList.clear(); } } /* * Function: MT_RestoreController * Description: 给外部使用的获取MT_RestoreController的唯一实例 * input void * Return: void */ // public static MT_RestoreController getInstance() // { // if(mController == null) // { // mController = new MT_RestoreController(); // } // return mController; // } /* * Function: restoreData * Description: 根据产生的异常和异常机制恢复程序 * Class cls 产生的异常类 * Return: void */ public void restoreData(Class<Exception> cls) { String key = cls.getName(); ArrayList<String> subList = mPolicyList.get(key); if(subList != null && subList.size() > 0) { int len = subList.size(); for(int i = 0; i < len; i++) { String className = subList.get(i); try { Class<?> handler = Class.forName(className); Object obj = handler.newInstance(); if(obj instanceof Mogoo_RestorePlolicy){ ((Mogoo_RestorePlolicy)obj).runPlolicy(context); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }