美文网首页Android高级进阶Android进阶之路
做开发的过程中,搞着搞着出现异常了,这可怎么办

做开发的过程中,搞着搞着出现异常了,这可怎么办

作者: 小小小小怪兽_666 | 来源:发表于2020-02-19 17:51 被阅读0次

    前言

    在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹 出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连 我们自己本身可能都接受不了。虽然我们在发布程序时总会经过仔细的测试,但是 难免会碰到预料不到的错误。

    顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找
    https://github.com/xiangjiana/Android-MS
    (VX:mm14525201314)

    今天就来自定义一个程序出错时的处理,类似iphone的闪退。(虽然闪退也是用户不 愿意看到的,但是在用户体验上明显比那个原生的弹窗好多了) 废话不多说,直接上代码:

    CrashHandler

      /**
       * 自定义的 异常处理类 , 实现了 UncaughtExceptionHandler接口 
       *
       */ 
        public class CrashHandler implements UncaughtExceptionHandler { 
          // 需求是 整个应用程序 只有一个 MyCrash-Handler 
          private static CrashHandler INSTANCE ; 
          private Context context; 
        
          //1.私有化构造方法 
          private CrashHandler(){ 
    
          }
    
          public static synchronized CrashHandler getInstance(){ 
             if (INSTANCE == null) 
                 INSTANCE = new CrashHandler(); 
             return INSTANCE;
          }
       
          public void init(Context context){ 
             this.context = context; 
          }
    
          public void uncaughtException(Thread arg0, Throwable arg1) { 
             System.out.println("程序挂掉了 "); 
             // 在此可以把用户手机的一些信息以及异常信息捕获并上传,由于UMeng在 这方面有很程序的api接口来调用,故没有考虑 
             //干掉当前的程序 
             android.os.Process.killProcess(android.os.Process.myPid( ));
          } 
      }
    

    CrashApplication

      /**
       * 在开发应用时都会和Activity打交道,而Application使用的就相对较少了。 
       * Application是用来管理应用程序的全局状态的,比如载入资源文件。 
       * 在应用程序启动的时候Application会首先创建,然后才会根据情况(Intent)启 动相应的Activity或者Service。 
       * 在本文将在Application中注册未捕获异常处理器。
       */ 
        public class CrashApplication extends Application { 
           @Override 
           public void onCreate() { 
              super.onCreate(); 
              CrashHandler handler =  CrashHandler.getInstance(); 
              handler.init(getApplicationContext()); 
              Thread.setDefaultUncaughtExceptionHandler(handler); 
           }
       }
    

    AndroidManifest.xml中注册

      <?xml version="1.0" encoding="utf-8"?> 
      <manifest xmlns:android="http://schemas.android.com/apk/res/andr oid"package="org.wp.activity" android:versionCode="1" android:ve rsionName="1.0"> 
      <application android:icon="@drawable/icon" android:label="@s tring/app_name" android:name=".CrashApplication" android:debuggable="tru e"> 
          <activity android:name=".MainActivity" android:label="@s tring/app_name"> 
               <intent-filter> 
                    <action android:name="android.intent.action.MAIN" /> 
                    <category android:name="android.intent.category. LAUNCHER" />
               </intent-filter> 
          </activity> 
        </application> 
        <uses-sdk android:minSdkVersion="8" /> 
      </manifest>
    

    至此,可以测试下在出错的时候程序会直接闪退,并杀死后台进程。当然也可以自 定义一些比较友好的出错UI提示,进一步提升用户体验。

    顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找
    https://github.com/xiangjiana/Android-MS
    (VX:mm14525201314)

    相关文章

      网友评论

        本文标题:做开发的过程中,搞着搞着出现异常了,这可怎么办

        本文链接:https://www.haomeiwen.com/subject/cwnafhtx.html