手表开发中的CrashHandler

来源:互联网 发布:弹簧刀 知乎 编辑:程序博客网 时间:2024/06/11 20:45
package com.netease.mobimail;import android.app.ActivityManager;import android.app.ActivityManager.RunningTaskInfo;import android.app.Application;import android.content.ComponentName;import android.content.Context;import com.netease.mobimail.activity.BaseActivity;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.concurrent.ConcurrentHashMap;public class WearMailApplication        extends Application{    public static BaseActivity msCurrentActivity;    private static Map<String, BaseActivity> sActivityMap = new ConcurrentHashMap();    public static void addActivity(BaseActivity paramBaseActivity)    {        sActivityMap.put(paramBaseActivity.getClass().getName(), paramBaseActivity);    }    public static void clearAll()    {        try        {            Iterator localIterator = sActivityMap.entrySet().iterator();            while (localIterator.hasNext())            {                BaseActivity localBaseActivity = (BaseActivity)((Map.Entry)localIterator.next()).getValue();                localIterator.remove();                if ((localBaseActivity != null) && (!localBaseActivity.isFinishing())) {                    localBaseActivity.finish();                }            }        }        finally {}    }    public static BaseActivity getActivityByClass(Class<?> paramClass)    {        return (BaseActivity)sActivityMap.get(paramClass.getName());    }    public static BaseActivity getCurrentActivity()    {        return msCurrentActivity;    }    public static boolean isAppInForeground(Context paramContext)    {        try        {            List localList = ((ActivityManager)paramContext.getSystemService("activity")).getRunningTasks(1);            if (localList.isEmpty()) {                return false;            }            boolean bool2 = ((ActivityManager.RunningTaskInfo)localList.get(0)).topActivity.getPackageName().equalsIgnoreCase(paramContext.getPackageName());            return bool2;        }        catch (Exception localException)        {            if (getCurrentActivity() == null) {                break label73;            }        }        if (!getCurrentActivity().isFinishing()) {}        label73:        for (boolean bool1 = true;; bool1 = false) {            return bool1;        }    }    public static void setCurrentActivity(BaseActivity paramBaseActivity)    {        msCurrentActivity = paramBaseActivity;    }    public void onCreate()    {        super.onCreate();        CrashHandler.getInstance().init();    }}


 

android捕获全局异常,CrashHandler

标签: androidfileapplicationclasscrashnull
 8323人阅读 评论(5) 收藏 举报
 分类:
 
[java] view plain copy
  1. package com.numob.david.util;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileWriter;  
  5. import java.io.IOException;  
  6. import java.lang.Thread.UncaughtExceptionHandler;  
  7. import java.util.Date;  
  8.   
  9. import android.os.Environment;  
  10. import android.util.Log;  
  11.   
  12. /** 
  13.  * 全局处理异常. 
  14.  * 
  15.  */  
  16. public class CrashHandler implements UncaughtExceptionHandler {  
  17.     /** CrashHandler实例 */  
  18.   
  19.     private static CrashHandler instance;  
  20.   
  21.     /** 获取CrashHandler实例 ,单例模式*/  
  22.   
  23.     public static CrashHandler getInstance() {  
  24.         if (instance == null) {  
  25.             instance = new CrashHandler();  
  26.         }  
  27.         return instance;  
  28.     }  
  29.   
  30.     @Override  
  31.     public void uncaughtException(Thread arg0, Throwable arg1) {  
  32. //        ScreenManager.getScreenManager().popActivity(Pay.activity);  
  33. //         arg0.stop();  
  34. //         arg0.destroy();  
  35.           
  36.         String logdir ;  
  37.         if(Environment.getExternalStorageDirectory()!=null){  
  38.             logdir = Environment.getExternalStorageDirectory().getAbsolutePath()  
  39.                     + File.separator + "snda"+File.separator+"log" ;  
  40.               
  41.               
  42.             File file = new File(logdir);  
  43.             boolean mkSuccess;  
  44.             if (!file.isDirectory()) {  
  45.                 mkSuccess = file.mkdirs();  
  46.                 if (!mkSuccess) {  
  47.                     mkSuccess = file.mkdirs();  
  48.                 }  
  49.             }  
  50.             try {  
  51.                 FileWriter fw = new FileWriter(logdir+File.separator+"error.log",true);  
  52.                 fw.write(new Date()+"\n");  
  53.                 StackTraceElement[] stackTrace = arg1.getStackTrace();  
  54.                 fw.write(arg1.getMessage() + "\n");  
  55.                 for (int i = 0; i < stackTrace.length; i++) {  
  56.                     fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName()  
  57.                             + " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber()  
  58.                             + "\n");  
  59.                 }  
  60.                 fw.write("\n");  
  61.                 fw.close();  
  62.             } catch (IOException e) {  
  63.                 Log.e("crash handler""load file failed...", e.getCause());  
  64.             }  
  65.         }  
  66.         arg1.printStackTrace();  
  67.         android.os.Process.killProcess(android.os.Process.myPid());   
  68.     }  
  69.   
  70. }  
[java] view plain copy
  1.   


Activity或是Application中加入这样的代码 :

[java] view plain copy
  1. CrashHandler crashHandler = CrashHandler.getInstance();  
  2. crashHandler.init(getApplicationContext());  


今天只做简单介绍了。

0 0