Browse Source

更新文档

drake 4 years ago
parent
commit
2a67b38432

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 ## Net
 
-<p align="center"><img src="https://i.imgur.com/YRdJdzG.jpg" width="50%"/></p>
+<p align="center"><img src="https://i.imgur.com/YRdJdzG.jpg" width="40%"/></p>
 
 <p align="center"><strong>不仅仅是网络请求的异步任务库</strong></p>
 

+ 1 - 1
docs/auto-dialog.md

@@ -15,7 +15,7 @@ scopeDialog {
 <br>
 
 加载框默认使用的是Android原生加载框(MaterialDesign Dialog), 当然也提供配置函数
-<img src="https://i.imgur.com/egUM3V1.png" width="50%"/>
+<img src="https://i.imgur.com/egUM3V1.png" width="40%"/>
 
 ## 自定义加载框
 

+ 2 - 5
docs/auto-error-handle.md

@@ -11,11 +11,8 @@ Net具备完善的全局错误处理机制
 
 
 ## 手动错误处理
-<br>
-
-!!! note
-    假设不需要全局错误处理, 我们可以`catch`作用域来自己处理异常
 
+> 假设不需要全局错误处理, 我们可以`catch`作用域来自己处理异常
 
 ```kotlin
 scopeNetLife {
@@ -53,7 +50,7 @@ catch里面的`it`属于异常对象, 这里列举可能存在的异常
 
 Net默认的错误处理源码
 
-<img src="https://i.imgur.com/t1Ep8tj.png" width="70%"/>
+<img src="https://i.imgur.com/t1Ep8tj.png" width="50%"/>
 
 
 ## 错误信息文本

+ 2 - 4
docs/auto-refresh.md

@@ -1,8 +1,7 @@
 Net属于低耦合框架, 自动下拉刷新需要依赖第三方组件: [BRV](https://github.com/liangjingkanji/BRV)(点击链接按文档依赖)
 <br>
 
-!!! note
-    当然如果自己处理下拉刷新也是可以的, Net可以仅仅作为网络框架存在
+> 当然如果自己处理下拉刷新也是可以的, Net可以仅仅作为网络框架存在
 
 创建PageRefreshLayout
 ```xml
@@ -41,8 +40,7 @@ page.onRefresh {
 
 <br>
 
-!!! note
-    注意高亮处使用的是`scope`而不是其他作用域, 只能使用scope, 否则无法跟随PageRefreshLayout生命周期等功能
+> 注意高亮处使用的是`scope`而不是其他作用域, 只能使用scope, 否则无法跟随PageRefreshLayout生命周期等功能
 
 <br>
 

+ 1 - 2
docs/auto-state.md

@@ -37,8 +37,7 @@ state.onRefresh {
 ```
 <br>
 
-!!! note
-    注意高亮处使用的是`scope`而不是其他作用域, 只能使用scope, 否则无法跟随StateLayout生命周期(自动显示对应缺省页)等功能
+> 注意高亮处使用的是`scope`而不是其他作用域, 只能使用scope, 否则无法跟随StateLayout生命周期(自动显示对应缺省页)等功能
 
 ## 生命周期
 

+ 14 - 13
docs/cancel.md

@@ -31,16 +31,17 @@ NetCancel.cancel("请求用户信息")
 
 <br>
 
-!!! note
-    需要注意的是一旦为网络请求设置UID你就无法在作用域执行完毕自动取消网络请求了, 因为自动取消的原理就是使用作用域
-    的上下文错误处理器来作为UID
-    ```kotlin hl_lines="6"
-    inline fun <reified M> CoroutineScope.Get(
-        path: String,
-        tag: Any? = null,
-        cache: CacheMode = CacheMode.HTTP,
-        absolutePath: Boolean = false,
-        uid: Any? = coroutineContext[CoroutineExceptionHandler],
-        noinline block: SimpleUrlRequest.Api.() -> Unit = {}
-    ): Deferred<M> = async(Dispatchers.IO)
-    ```
+> 需要注意的是一旦为网络请求设置UID你就无法在作用域执行完毕自动取消网络请求了, 因为自动取消的原理就是使用作用域
+的上下文错误处理器来作为UID
+
+
+```kotlin hl_lines="6"
+inline fun <reified M> CoroutineScope.Get(
+    path: String,
+    tag: Any? = null,
+    cache: CacheMode = CacheMode.HTTP,
+    absolutePath: Boolean = false,
+    uid: Any? = coroutineContext[CoroutineExceptionHandler],
+    noinline block: SimpleUrlRequest.Api.() -> Unit = {}
+): Deferred<M> = async(Dispatchers.IO)
+```

+ 4 - 3
docs/config.md

@@ -9,9 +9,10 @@ class App : Application() {
 
             // 大括号内部都是可选项配置
 
-            converter(JsonConvert()) // 转换器
+            converter(MoshiConvert()) // 转换器
             cacheEnabled() // 开启缓存
-            logEnabled = false // 关闭异常信息打印
+            setLogRecord(BuildConfig.DEBUG) // 日志记录器
+            logEnabled = BuildConfig.DEBUG // LogCat异常日志
         }
     }
 }
@@ -19,7 +20,7 @@ class App : Application() {
 
 initNet 作用域内可选函数
 
-<img src="https://i.imgur.com/G8W4oDX.png" width="60%"/>
+<img src="https://i.imgur.com/G8W4oDX.png" width="40%"/>
 
 ## 动态配置
 

+ 6 - 8
docs/convert.md

@@ -1,7 +1,6 @@
 在Net中转换器([Convert](https://github.com/liangjingkanji/Net/blob/master/kalle/src/main/java/com/yanzhenjie/kalle/simple/Converter.kt))负责数据解析的工作, 自定义转换器即实现Convert接口即可
 
-!!! note
-    你的业务可能需要请求参数加密或者拼接一串特殊含义的参数, 或者响应信息需要解密. 请不要尝试封装Post或者Get等请求函数(这是蠢材做法), 自定义拦截器和转换器可以应对任何项目需求.
+> 你的业务可能需要请求参数加密或者拼接一串特殊含义的参数, 或者响应信息需要解密. 请不要尝试封装Post或者Get等请求函数(这是蠢材做法), 自定义拦截器和转换器可以应对任何项目需求.
 
 - 数据解密
 - 解析JSON
@@ -49,8 +48,7 @@
 
 <br>
 
-!!! note
-    注意解析器(Gson或者Moshi)的对象记得定义为类成员, 这样可以不会导致每次解析都要创建一个新的对象, 减少内存消耗
+> 注意解析器(Gson或者Moshi)的对象记得定义为类成员, 这样可以不会导致每次解析都要创建一个新的对象, 减少内存消耗
 
 <br>
 
@@ -76,8 +74,9 @@
 ## 自定义转换器
 
 [DefaultConvert](https://github.com/liangjingkanji/Net/blob/master/net/src/main/java/com/drake/net/convert/DefaultConvert.kt) 实际上也只是实现Convert接口的一个抽象类
-!!! note "自定义转换器"
-    当你对DefaultConvert有更多需求或者功能扩展的话推荐参考DefaultConvert来实现Convert接口(直接复制DefaultConvert文件修改也行)
+
+> 当你对DefaultConvert有更多需求或者功能扩展的话推荐参考DefaultConvert来实现Convert接口(直接复制DefaultConvert文件修改也行)
+
 源码如下
 ```kotlin
 abstract class DefaultConvert(
@@ -125,5 +124,4 @@ DefaultConvert对于的核心逻辑
 
 <br>
 
-!!! note
-    转换器允许返回null, 如果你有任何认为不支持或者需要中断请求的操作可以在转换器中抛出任何异常, 推荐你的自定义异常继承`NetException`
+> 转换器允许返回null, 如果你有任何认为不支持或者需要中断请求的操作可以在转换器中抛出任何异常, 推荐你的自定义异常继承`NetException`

+ 137 - 49
docs/css/extra.css

@@ -15,24 +15,40 @@
     --md-code-hl-generic-color:        #A9B7C6;
     --md-code-hl-variable-color:       #A9B7C6;
 
-    --highlighting-color:  #d63200;
-    --highlighting-color-opacity:  #d6320022;
+    --md-typeset-color: #333333;
+    --drake-highlight:  #d63200;
+    --drake-accent: #e95f59;
+    --drake-highlight-opacity:  #d6320022;
     --md-admonition-fg-color: #333333;
 }
 
 [data-md-color-scheme="drake"] {
-    --md-primary-fg-color:        #d63200;
-    --md-primary-fg-color--light: #d63200;
-    --md-primary-fg-color--dark:  #d63200;
-    --md-accent-fg-color:        #d63200;
-    --md-accent-fg-color--light: #d63200;
-    --md-accent-fg-color--dark:  #d63200;
+    --md-primary-fg-color:          hsla(0, 0%, 100%, 1);
+    --md-primary-fg-color--light:   hsla(0, 0%, 100%, 0.7);
+    --md-primary-fg-color--dark:    hsla(0, 0%, 0%, 0.07);
+    --md-primary-bg-color:          hsla(0, 0%, 0%, 0.87);
+    --md-primary-bg-color--light:   hsla(0, 0%, 0%, 0.54);
+    --md-accent-fg-color:           #d63200;
+    --md-accent-fg-color--light:    #d63200;
+    --md-accent-fg-color--dark:     #d63200;
+    --md-typeset-a-color:           #d63200 !important;
 }
 
+/*字体渲染*/
+body, input {
+    font-family: "JetBrains Mono", -apple-system, Helvetica, Arial, sans-serif;
+}
+pre, code, kbd {
+    font-family: "JetBrains Mono", SFMono-Regular, Consolas, Menlo, monospace;
+}
+* {
+    -webkit-font-feature-settings: "liga" on, "calt" on;
+    -webkit-font-smoothing: subpixel-antialiased;
+    text-rendering: optimizeLegibility;
+}
 @font-face{
     font-family: 'JetBrains Mono';
-    src: local("JetBrains Mono")
-         url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/eot/JetBrainsMono-Regular.eot') format('embedded-opentype'),
+    src: url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/eot/JetBrainsMono-Regular.eot') format('embedded-opentype'),
          url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/woff2/JetBrainsMono-Regular.woff2') format('woff2'),
          url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/web/woff/JetBrainsMono-Regular.woff') format('woff'),
          url('https://raw.githubusercontent.com/JetBrains/JetBrainsMono/master/ttf/JetBrainsMono-Regular.ttf') format('truetype');
@@ -40,72 +56,144 @@
     font-style: normal;
 }
 
-body, input {
-    font-family: "JetBrains Mono", -apple-system, Helvetica, Arial, sans-serif;
+/*布局*/
+.md-grid {
+    max-width: 150em !important;
 }
 
-pre, code, kbd {
-    font-family: "JetBrains Mono", Consolas, Menlo, monospace;
+/*表格*/
+.md-typeset__table {
+    display: block;
+    padding: 0 .8rem;
+    margin: 1em 0;
+}
+table tr:nth-child(2n), thead {
+    background-color: #fafafa;
+}
+.md-typeset table:not([class]) {
+    border-collapse: collapse;
+    border-spacing: 0px;
+    width: 100%;
+    break-inside: auto;
+    text-align: left;
+    display: table;
+    box-shadow:none;
+}
+.md-typeset table:not([class]) th {
+    border: 1px solid #dfe2e5;
+    background-color: #f2f2f2;
+    padding: 6px 13px;
+    font-weight: bold;
+    color: var(--md-typeset-color);
+}
+.md-typeset table:not([class]) td {
+    border: 1px solid #dfe2e5;
 }
 
-* {
-    -webkit-font-feature-settings: "liga" on, "calt" on;
-    -webkit-font-smoothing: subpixel-antialiased;
-    text-rendering: optimizeLegibility;
+/*引用*/
+.md-typeset blockquote {
+    color: inherit;
+    padding: 10px 16px;
+    background-color: #fdefee;
+    position: relative;
+    border-left: none;
+    margin: 2em 0;
+}
+.md-typeset blockquote p {
+    margin: 0 0 !important;
+}
+.md-typeset blockquote:before {
+    display: block;
+    position: absolute;
+    content: '';
+    width: 4px;
+    left: 0;
+    top: 0;
+    height: 100%;
+    background-color:var(--drake-accent);
+    border-radius: 4px;
 }
 
-.md-typeset, .md-nav__item {
-    color: var(--md-admonition-fg-color) !important;
-    font-size: 12px !important;
-}
-.md-typeset code {
-    font-size: inherit;
+/*字间距*/
+.md-typeset {
+    line-height: 1.8;
+    font-size: 12px;
 }
-.md-typeset .admonition, .md-typeset details {
-    font-size: inherit;
+.md-typeset pre {
+    line-height: 1.4;
 }
 
-.md-typeset .admonition, .md-typeset details {
-    border-left: .2rem solid var(--md-primary-fg-color);
-    border-color: var(--md-primary-fg-color) !important;
-}
-.md-typeset .note>.admonition-title::before, .md-typeset .note>summary::before {
-    background-color: var(--md-primary-fg-color);
+/*标签*/
+.md-typeset .tabbed-set>label {
+    border-bottom: 2px solid transparent;
+    color: var(--md-typeset-color);
+    line-height: 1.3;
+    margin-bottom: .8em;
+    font-weight:normal;
 }
-.md-typeset .note>.admonition-title, .md-typeset .note>summary {
-    background-color: var(--highlighting-color-opacity);
+.md-typeset .tabbed-set>input:checked+label {
+    font-weight:500;
+    line-height: 1.3;
+    margin-bottom: .8em;
 }
 
-p code, article > code, li > code, td > code, th > code, a > code {
-    background-color: rgb(0,0,0,0) !important;
-    color: var(--highlighting-color) !important;
-    margin: 0 2px;
+/*侧边导航*/
+.md-nav__item .md-nav__link--active {
+    color: var(--drake-highlight);
+    font-weight:500;
 }
-
-.md-content a {
-    color: var(--highlighting-color) !important;
-    text-decoration: underline;
-    margin: 0 2px;
+.md-nav__title[for="__drawer"] {
+    display: none;
 }
-
-h1, h2, h3, h4, h5, h6, .md-header-nav__title {
-    font-weight: bold !important;
+div .md-source__fact {
+    display: none;
+}
+.md-source__icon+.md-source__repository {
+    margin-left: -1em;
+    padding-left: 0;
+    font-weight: 500;
+}
+.md-nav__link {
+    font-size: 12px;
+    line-height: 1.6;
 }
 
+/*代码块*/
 .md-typeset code {
+    font-size: inherit;
     border-radius: 2px !important;
     border: none !important;
 }
-
 .md-typeset pre>code {
     padding: 0.8em 0.8em;
 }
 
+/*代码片段*/
+p code, article > code, li > code, td > code, th > code, a > code {
+    background-color: rgb(0,0,0,0) !important;
+    color: var(--drake-highlight) !important;
+    padding: 0 2px !important;
+}
+
 img {
     border-radius: 2px;
     margin: 4px 0;
 }
 
-.md-typeset .tabbed-set>input:checked+label {
-    margin-bottom: 4px;
+/*链接*/
+.md-content a {
+    color: var(--drake-highlight) !important;
+    text-decoration: underline;
+    margin: 0 2px;
+}
+
+/*编辑按钮*/
+.md-typeset .md-content__button {
+    color: var(--md-default-fg-color--lighter) !important;
 }
+
+/*标题*/
+h1, h2, h3, h4, h5, h6, .md-header-nav__title {
+    font-weight: bold !important;
+    color: #273849;
+}

+ 1 - 2
docs/download-image.md

@@ -13,5 +13,4 @@ scopeDialog {
 
 DownloadImage的第一个参数Url不会包含`baseUrl`, 所以你可以看到我手动`NetConfig.host + "download/img"`.
 
-!!! note
-    这是因为一般项目设计中图片都是单独与服务器之外的地址, 例如CDN图床, 所以默认不自动拼接baseUrl
+> 这是因为一般项目设计中图片都是单独与服务器之外的地址, 例如CDN图床, 所以默认不自动拼接baseUrl

+ 2 - 3
docs/exception-track.md

@@ -1,8 +1,7 @@
 Net对于网络发送的异常追踪非常详细, 不仅是网络的还是异步任务的异常处理都非常独到
 
 <br>
-!!! note
-    只有网络错误就会在LogCat打印出异常信息, 并且跟随其地址信息
+> 只有网络错误就会在LogCat打印出异常信息, 并且跟随其地址信息
 
 
 演示访问一个不存在的请求路径(但是URL存在)
@@ -15,7 +14,7 @@ scopeNetLife {
 
 查看LogCat
 
-<img src="https://i.imgur.com/5BpSWVv.png" width="100%"/>
+<img src="https://i.imgur.com/5BpSWVv.png" width="80%%"/>
 
 这属于请求参数错误404, 将会打印出错误码以及请求的URL.
 

+ 4 - 8
docs/fastest.md

@@ -1,8 +1,7 @@
 Net支持多个接口请求并发, 仅返回最快的请求结果, 剩余请求将被自动取消, 同样可以用于筛选掉无法响应的域名
 <br>
 
-!!! note
-    接口请求错误被忽略(LogCat依然可以看到异常信息), 但如果所有请求全部异常则抛出最后一个请求的异常作为错误处理
+> 接口请求错误被忽略(LogCat依然可以看到异常信息), 但如果所有请求全部异常则抛出最后一个请求的异常作为错误处理
 
 示例
 ```kotlin
@@ -40,8 +39,7 @@ scopeNetLife {
 网络请求的取消本质上依靠uid来辨别,如果设置[uid]参数就可以在返回最快结果后取消掉其他网络请求, 反之不会取消其他网络请求
 <br>
 
-!!! note
-    uid可以是任何类型任何值, 只有请求的`uid`和`fastest`函数的uid参数等于即可
+> uid可以是任何类型任何值, 只有请求的`uid`和`fastest`函数的uid参数等于即可
 
 <br>
 
@@ -70,8 +68,7 @@ scopeNetLife {
 
 <br>
 
-!!! note
-    只有最快返回结果的网络请求(或异步任务)的`transform`回调才会被执行到
+> 只有最快返回结果的网络请求(或异步任务)的`transform`回调才会被执行到
 
 ## 捕获Fastest
 ```kotlin
@@ -93,5 +90,4 @@ scopeNetLife {
 
 <br>
 
-!!! note
-    不要尝试使用这种方式来取代CDN加速
+> 不要尝试使用这种方式来取代CDN加速

+ 1 - 2
docs/index.md

@@ -38,8 +38,7 @@ Net使用协程发起网络, 但是即使不会协程也可以使用该框架
 
 <br>
 
-!!! note
-    当`Get`或`Post`等函数调用就会开始发起网络请求, `await`只是等待其请求成功返回结果, 所以如果你在`await`后执行的网络请求,这不属于并发(属于串行)
+> 当`Get`或`Post`等函数调用就会开始发起网络请求, `await`只是等待其请求成功返回结果, 所以如果你在`await`后执行的网络请求,这不属于并发(属于串行)
 
 并发的错误示例
 ```kotlin hl_lines="3"

+ 1 - 2
docs/interceptor.md

@@ -1,8 +1,7 @@
 拦截器一般用于修改请求的参数, Net拦截器和Okhttp使用方式一样
 <br>
 
-!!! note
-    你的业务可能需要请求参数加密或者拼接一串特殊含义的参数, 或者响应信息需要解密. 请不要尝试封装Post或者Get等请求函数(这是蠢材做法), 自定义拦截器和转换器可以应对任何项目需求.
+> 你的业务可能需要请求参数加密或者拼接一串特殊含义的参数, 或者响应信息需要解密. 请不要尝试封装Post或者Get等请求函数(这是蠢材做法), 自定义拦截器和转换器可以应对任何项目需求.
 
 
 ```kotlin

+ 4 - 5
docs/log-recorder.md

@@ -33,8 +33,8 @@ initNet("http://182.92.97.186/") {
 |-|-|
 | Device | 选择调试设备 |
 | Process | 选择展示记录的进程 |
-| <img src="https://i.imgur.com/bLXKLrI.png" width="20%"/> 抓取 | 一般情况不需要使用, 假设没有及时更新请点击图标 |
-| <img src="https://i.imgur.com/WG2WgBy.png" width="20%"/> 清空 | 清空记录 |
+| <img src="https://i.imgur.com/bLXKLrI.png" width="10%"/> 抓取 | 一般情况不需要使用, 假设没有及时更新请点击图标 |
+| <img src="https://i.imgur.com/WG2WgBy.png" width="10%"/> 清空 | 清空记录 |
 
 
 ### 响应字符串解密
@@ -62,8 +62,7 @@ abstract class DefaultConvert(
 ```
 <br>
 
-!!! note
-    假设后端返回的加密数据, 可以为`response.log`赋值解密后的字符串 <br>
+> 假设后端返回的加密数据, 可以为`response.log`赋值解密后的字符串 <br>
 
 
 ### 请求参数加密
@@ -96,7 +95,7 @@ class NetInterceptor : Interceptor {
 ## LogCat冗余日志过滤
 实际上Net的网络日志还是会被打印到LogCat, 然后通过插件捕捉显示.
 
-<img src="https://i.imgur.com/0BZAg4M.png" width="50%"/>
+<img src="https://i.imgur.com/0BZAg4M.png" width="40%"/>
 
 如果不想LogCat的冗余日志影响查看其它日志, 可以通过AndroidStudio的功能折叠隐藏, 添加一个`OKPREL_`过滤字段即可
 <img src="https://i.imgur.com/F6DoICr.png" width="100%"/>

+ 1 - 2
docs/parallel.md

@@ -3,8 +3,7 @@ Net在2.0开始引入协程来支持并发和异步, 虽然很多网络框架支
 
 <br>
 
-!!! note
-    这里的`同时/并发/并行`统称为并发(具体是不是并行不需要开发者来考虑)
+> 这里的`同时/并发/并行`统称为并发(具体是不是并行不需要开发者来考虑)
 
 <br>
 在上章节已经使用过了网络的并发请求

+ 10 - 12
docs/parse-list.md

@@ -4,7 +4,7 @@
     code:"200",
     msg:"错误信息",
     data: {
-        name: "drake"
+        name: "value"
     }
 }
 ```
@@ -36,15 +36,14 @@ inline fun <reified T> String.toJsonArray(): MutableList<T> {
     return JSON.parseArray(this, T::class.java)
 }
 ```
-<br>
 
-!!! note
-    `JSON.parseArray`这是FastJson的函数, 如果你使用的是Gson可以使用
-    ```kotlin
-    inline fun <reified T> String.toJsonArray(): MutableList<T> {
-        return Gson().fromJson(this, TypeToken.getParameterized(List::class.java, T::class.java).type)
-    }
-    ```
+`JSON.parseArray`这是FastJson的函数, 如果你使用的是Gson可以使用
+
+```kotlin
+inline fun <reified T> String.toJsonArray(): MutableList<T> {
+    return Gson().fromJson(this, TypeToken.getParameterized(List::class.java, T::class.java).type)
+}
+```
 
 ### 2) 使用
 
@@ -56,6 +55,5 @@ scope {
 ```
 <br>
 
-!!! note
-    这样的优点是扩展方便, 整体清晰. 毕竟不是每个接口的data都可能是JSON数组, 而且这样还支持List嵌套(JSON数组嵌套)<br>
-    该扩展函数太简单我就不加入到框架中了, 大家复制粘贴下就OK了
+> 这样的优点是扩展方便, 整体清晰. 毕竟不是每个接口的data都可能是JSON数组, 而且这样还支持List嵌套(JSON数组嵌套)<br>
+  该扩展函数太简单我就不加入到框架中了, 大家复制粘贴下就OK了

+ 2 - 3
docs/read-cache.md

@@ -33,8 +33,7 @@ initNet("http://182.92.97.186/") {
 
 <br>
 
-!!! note
-    `preview`并没有说只能用在网络缓存上, 也可以用于其他的处理场景
+> `preview`并没有说只能用在网络缓存上, 也可以用于其他的处理场景
 
 <br>
 
@@ -71,4 +70,4 @@ initNet("http://182.92.97.186/") {
 
 <br>
 便于理解
-<img src="https://i.imgur.com/sHnrzWX.png" width="100%"/>
+<img src="https://i.imgur.com/sHnrzWX.png" width="80%%"/>

+ 1 - 2
docs/scope.md

@@ -28,8 +28,7 @@ Net的网络请求本身支持在官方的自带的作用域内使用, 但是考
 
 <br>
 
-!!! note
-    PageRefreshLayout/StateLayout 属于[BRV](https://github.com/liangjingkanji/BRV)框架中的布局, 用于支持[自动化缺省页/下拉刷新](auto-state.md)
+> PageRefreshLayout/StateLayout 属于[BRV](https://github.com/liangjingkanji/BRV)框架中的布局, 用于支持[自动化缺省页/下拉刷新](auto-state.md)
 <br>
 
 ## 捕捉异常/执行完成

+ 1 - 2
docs/tag.md

@@ -97,5 +97,4 @@ class NetInterceptor : Interceptor {
 ```
 <br>
 
-!!! note
-    RESPONSE 和 REQUEST 已经在Net框架中存在, 可以直接使用
+> RESPONSE 和 REQUEST 已经在Net框架中存在, 可以直接使用

+ 1 - 2
docs/upload-file.md

@@ -39,5 +39,4 @@ scopeNetLife {
 
 <br>
 
-!!! note
-    普通字段接口请求也可以通过这种方式监听上传参数进度
+> 普通字段接口请求也可以通过这种方式监听上传参数进度

+ 2 - 1
mkdocs.yml

@@ -3,7 +3,7 @@ site_author: drake
 site_description: Net document
 copyright: Copyright &copy; 2018 - 2020 Drake
 
-repo_name: Net
+repo_name: GitHub
 repo_url: https://github.com/liangjingkanji/Net
 
 extra_css:
@@ -17,6 +17,7 @@ theme:
 
   palette:
     scheme: drake
+    primary: white
 
   font: false
 

+ 4 - 1
sample/src/main/java/com/drake/net/sample/base/App.kt

@@ -19,7 +19,9 @@ package com.drake.net.sample.base
 import android.app.Application
 import com.drake.net.cacheEnabled
 import com.drake.net.initNet
+import com.drake.net.logEnabled
 import com.drake.net.sample.BR
+import com.drake.net.sample.BuildConfig
 import com.drake.net.sample.R
 import com.drake.net.sample.callback.MoshiConvert
 import com.drake.statelayout.StateConfig
@@ -42,7 +44,8 @@ class App : Application() {
         initNet("http://182.92.97.186/") {
             converter(MoshiConvert()) // 自动解析JSON映射到实体类中, 转换器分为全局和单例, 覆盖生效(拦截器允许多个)
             cacheEnabled()
-            setLogRecord(true)
+            setLogRecord(BuildConfig.DEBUG) // 日志记录器
+            logEnabled = BuildConfig.DEBUG // LogCat异常日志
         }
 
         // 初始化SmartRefreshLayout, 这是自动下拉刷新和上拉加载采用的第三方库  [https://github.com/scwang90/SmartRefreshLayout/tree/master] V2版本