首页 > 其他分享 >淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践

淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践

时间:2022-12-11 13:02:29浏览次数:57  
标签:tag maxSize param v1.0 mApp 鸡排 AutoEx


LZ-Says:五一三天过的,真是眼一睁一闭,嗖嗖的,给人最大的感觉就是,与其嘴上说着抓紧抓紧,不妨真正的过好现在的每一秒~


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_初始化

前言

恰巧看到鸡排大大五一更新了一款小神器,瞅着很nice,今天特意玩了一波,感觉很棒~~~

以后要跟着鸡排看世界,啦啦啦~


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_自定义_02

鸡排大大地址

首先,附上一波鸡排大大地址,各位小伙伴可点击进去,学习鸡排淫思奇巧~

鸡排大大个人博客地址:

​http://www.dajipai.cc/​

安卓Bus地址:

​http://www.apkbus.com/home.php?mod=space&uid=889706&do=index​

最最最关键的,当然是GitHub地址喽:

​https://github.com/BolexLiu​

跟着鸡排走,有肉吃~

好啦,不扯皮啦,聊点正事儿~

AutoEx 简述(鸡排应该不会打死我 ^_^)

先来一个UML时序图,我们先简单讲讲道理好不啦~

UML 时序图


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_AutoEx_03

诞生初衷

帮助Android开发者,让项目在崩溃时从异常堆栈中,自动寻找Stack Overflow的回答。

使用方式

Step 1: 在项目根build.gradle添加仓库地址:

allprojects {
repositories {maven { url 'https://jitpack.io' }}
}

Step 2: 添加远程依赖:

dependencies {
implementation 'com.github.BolexLiu:AutoEx:v1.0.6'
}

Step 3: Application初始化

AutoEx.apply(this);

当然也可以自定义配置参数:


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_AutoEx_04

这里需要注意,千万要记得在AndroidManifest文件中指定地址:

android:name=".base.BaseApplication"

此外,还需注意,务必提供访问网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

最后,说一下AutoEx的优势~

AutoEx优势

  • 体积小: 不到9kb;
  • 无需担心依赖冲突: 为了保持精简干净不给开发者添麻烦,AutoEx放弃依赖第三方库(比如OKHttp、Gson等);
  • 提升开发效率: 免去各种度娘,谷歌爸爸搜索时间,AutoEx即时捕捉异常为你搞定搜索时的繁琐~
  • 贴心的撸码,为你带来不一般的享受~


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_android_05

实践是检验真理的唯一标准

下面,我们通过几个测试,来验证下AutoEx究竟有多么神奇~

Example 1: java.lang.ArithmeticException: divide by zero

测试代码:

int num = 10 / 0;

运行后立即奔溃,异常如下:


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_AutoEx_06

稍等片刻后,即可发现AutoEx为你贴心查找出来在Stack Overflow同类问题链接:(获取结果和当前网络环境有关~)


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_自定义_07

一个不够,再来一个测试:

Example 2:java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.TextView.setText(java.lang.CharSequence)’ on a null object reference

测试代码段:

TextView tvTest=findViewById(R.layout.activity_main);
tvTest.setText("aaa");

问题日志详情:


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_AutoEx_08

AutoEx按照默认条件为我们检索有效信息如下:

淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_android_09

深入鸡排兄源码

来来来,一起拔光鸡排~~~


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_初始化_10

首先看看结构:


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_AutoEx_11

API类内容

定义请求基本格式体。

AutoEx类内容

对外暴露AutoEx入口,进行初始化。

/**
* @param mApp Applicatin
*/
public static void apply(Context mApp) {
apply(mApp, AutoEx.maxSize);
}

/**
* @param mApp Applicatin
* @param maxSize 最大提示答案数目
*/
public static void apply(Context mApp, int maxSize) {
apply(mApp, maxSize, LOG_TAG, true);
}

/**
* @param mApp Applicatin
* @param maxSize 最大提示答案数目
* @param tag 自定义日志 默认 AutoEx
*/
public static void apply(Context mApp, int maxSize, String tag) {
apply(mApp, maxSize, tag, true);
}

/**
* @param mApp Applicatin
* @param maxSize 最大提示答案数目
* @param tag 自定义日志 默认 AutoEx
* @param isDebug 是否开启调试 true为开启 false为关闭 默认开启
*/
public static void apply(Context mApp, int maxSize, String tag, boolean isDebug) {
if (!isDebug) {
return;
}
if (autoEx == null) {
autoEx = new AutoEx();
autoEx.init(mApp, maxSize, tag, isDebug);
}
}

这里可以很清晰得看到鸡排兄为我们提供了多种不同使用方式:

  • 仅传递Context,将全部采用AutoEx默认配置;
  • 传递Context以及自定义条数,方便有些同志检索多条结果;
  • 也可上一条基础上自定义自己得Tag,方便日志查看;
  • 最后也可在发布前关闭AutoEx。
private void init(Context mApp, int maxSize, String tag, boolean isDebug) {
this.mApp = mApp;
maxSize = maxSize;
tag = tag;
this.isDebug = isDebug;
this.mUEH = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this.handler);
}

而接下来则通过init方法去初始化AutoEx基本配置,包含异常捕获以及异常处理,这里通过一个handler,我们一起来看看里面具体干了些什么事儿?

private String getErrorMsg(Throwable ex) {
String message = ex.getMessage();
return message.substring(message.indexOf(":") + 2);
}

UncaughtExceptionHandler handler = new UncaughtExceptionHandler() {
public void uncaughtException(Thread thread, Throwable ex) {
String errorMsg = AutoEx.this.getErrorMsg(ex);
Intent intent = new Intent(AutoEx.this.mApp, DoHandleService.class);
intent.putExtra("ERROR_MSG", errorMsg);
intent.putExtra("MAX_SIZE", AutoEx.maxSize);
AutoEx.this.mApp.startService(intent);
AutoEx.this.mUEH.uncaughtException(thread, ex);
}
};

捕获到异常后取出当前异常信息,之后将获取到得异常以及检索条数传递到自定义Service中进行最终处理。

AutoExConstant类内容

定义AutoEx需要得一些日志信息。

DoHandleService类内容

这里便是AutoEx关键地带了。通过开启Service,拿到异常以及检索条数进行数据抓取。

HttpUtil类内容

主要封装Get请求。

个人感悟

这俩天确实学习到很多东西,也坚定了自己要走的路。

点滴积累,让我们一起变得越来越好~

参考资料

  1. ​官方地址​​;
  2. ​​同步教学文档​​;

个人公众号

不定时发布博文,工作忙,望各位老铁谅解~


淫思奇巧篇 之 跟着鸡排看世界 AutoEx:v1.0.6 实践_android_12


标签:tag,maxSize,param,v1.0,mApp,鸡排,AutoEx
From: https://blog.51cto.com/u_13346181/5928251

相关文章

  • ZhiXiMind_V1.0下载,开发必备
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【2026】即可获取下载链接。......
  • 图片一键调整工具V1.0-免费版
    一、工具介绍这是博主自己开发的图片一键调整工具V1.0,它可以调整图片宽度和高度、压缩图片大小、改变图片背景、转换图片格式和图片透明化,都是很常用的功能,操作起来简单方......
  • Sysbench编译安装v1.0.20版本
    sysbenchv1.0.20版本Git地址:https://github.com/akopytov/sysbench/releases/tag/1.0.20手动下载后编译安装1、下载安装包  2、解压tar-zxvfsysbench-1.0.20.tar.gz3、......
  • Sysbench编译安装v1.0.20版本
    sysbenchv1.0.20版本Git地址:https://github.com/akopytov/sysbench/releases/tag/1.0.20手动下载后编译安装1、下载安装包  2、解压tar-zxvfsysbench-1.0.20.tar.gz3、......
  • YC-Framework版本更新:V1.0.10
    分布式微服务框架:YC-Framework版本更新V1.0.10!!!本文主要内容:1.V1.0.10版本更新主要内容2.YC-Framework相关系列文章分享一、V1.0.10版本更新主要内容1.精简与完善Exa......
  • 评论框自动填写 v1.0
    无名博客https://wumingboke.xyz油猴脚本大部分typecho博客的评论框自动填写名称&邮箱&网址网址不需要可以不填//==UserScript==//@nametypecho评论自动......
  • 基于云开发的微信答题活动小程序v1.0搭建部署帮助文档
    11月是全国“119”消防宣传月,不少企事业单位都会举办消防安全知识竞答活动,因此我基于云开发搭建了消防安全知识答题活动小程序。接着,还写完了初阶的手把手教你搭建答题活......
  • 基于云开发的答题活动小程序v1.0,开开开源啦
    基于云开发的微信答题活动小程序v1.0,开开开源啦!!!这个答题小程序,技术栈是基于云开发的微信原生小程序。搭建教程系列文章11月是全国“119”消防宣传月,不少企事业单位会举办......
  • QFramework v1.0 使用指南 架构篇:08. FluentAPI 链式 API
    FluentAPI简介FluentAPI是笔者积累的UnityAPI的一些链式封装。基本使用非常简单,如下://traditionalstylevarplayerPrefab=Resources.Load<GameObject>("nop......
  • QFramework v1.0 使用指南 工具篇:10. FSMKit 状态机
    QFramework内置了一个简易的状态机,基本使用如下:链式usingUnityEngine;namespaceQFramework.Example{publicclassIStateBasicUsageExample:MonoBehaviour......