Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
囧jt
DoraemonKit
提交
d2470e1a
D
DoraemonKit
项目概览
囧jt
/
DoraemonKit
通知
129
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
75
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
75
Issue
75
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d2470e1a
编写于
7月 01, 2020
作者:
J
jackjintai
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/kotlin' into kotlin
上级
aeae8358
d067e0f9
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
237 addition
and
5 deletion
+237
-5
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/config/CrashCaptureConfig.kt
.../com/didichuxing/doraemonkit/config/CrashCaptureConfig.kt
+13
-0
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/core/UniversalActivity.kt
...com/didichuxing/doraemonkit/kit/core/UniversalActivity.kt
+2
-0
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureKit.kt
.../com/didichuxing/doraemonkit/kit/crash/CrashCaptureKit.kt
+12
-5
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureMainFragment.kt
...chuxing/doraemonkit/kit/crash/CrashCaptureMainFragment.kt
+77
-0
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureManager.kt
.../didichuxing/doraemonkit/kit/crash/CrashCaptureManager.kt
+89
-0
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashInfo.kt
...n/java/com/didichuxing/doraemonkit/kit/crash/CrashInfo.kt
+11
-0
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/FormatUtil.kt
.../main/java/com/didichuxing/doraemonkit/util/FormatUtil.kt
+13
-0
Android/kotlin/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml
...it/src/main/res/layout/dk_fragment_crash_capture_main.xml
+20
-0
未找到文件。
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/config/CrashCaptureConfig.kt
0 → 100644
浏览文件 @
d2470e1a
package
com.didichuxing.doraemonkit.config
import
com.didichuxing.doraemonkit.constant.SharedPrefsKey
import
com.didichuxing.doraemonkit.util.SharedPrefsUtil
/**
* Created by wangxueying on 2020-06-30.
*/
object
CrashCaptureConfig
{
var
isCrashCaptureOpen
:
Boolean
get
()
=
SharedPrefsUtil
.
getBoolean
(
SharedPrefsKey
.
CRASH_CAPTURE_OPEN
,
false
)
set
(
open
)
=
SharedPrefsUtil
.
putBoolean
(
SharedPrefsKey
.
CRASH_CAPTURE_OPEN
,
open
)
}
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/core/UniversalActivity.kt
浏览文件 @
d2470e1a
...
...
@@ -7,6 +7,7 @@ import com.didichuxing.doraemonkit.constant.BundleKey
import
com.didichuxing.doraemonkit.constant.FragmentIndex
import
com.didichuxing.doraemonkit.kit.blockmonitor.BlockMonitorFragment
import
com.didichuxing.doraemonkit.kit.colorpick.ColorPickerSettingFragment
import
com.didichuxing.doraemonkit.kit.crash.CrashCaptureMainFragment
import
com.didichuxing.doraemonkit.kit.dataclean.DataCleanFragment
import
com.didichuxing.doraemonkit.kit.fileexplorer.FileExplorerFragment
import
com.didichuxing.doraemonkit.kit.gpsmock.GpsMockFragment
...
...
@@ -60,6 +61,7 @@ open class UniversalActivity : BaseActivity() {
FragmentIndex
.
FRAGMENT_NETWORK_MOCK
->
NetWorkMockFragment
::
class
.
java
FragmentIndex
.
FRAGMENT_FILE_EXPLORER
->
FileExplorerFragment
::
class
.
java
FragmentIndex
.
FRAGMENT_GPS_MOCK
->
GpsMockFragment
::
class
.
java
FragmentIndex
.
FRAGMENT_CRASH
->
CrashCaptureMainFragment
::
class
.
java
else
->
null
}
if
(
fragmentClass
==
null
)
{
...
...
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureKit.kt
浏览文件 @
d2470e1a
...
...
@@ -2,6 +2,8 @@ package com.didichuxing.doraemonkit.kit.crash
import
android.content.Context
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.CrashCaptureConfig
import
com.didichuxing.doraemonkit.constant.FragmentIndex
import
com.didichuxing.doraemonkit.kit.AbstractKit
/**
...
...
@@ -14,17 +16,22 @@ class CrashCaptureKit : AbstractKit() {
override
val
icon
:
Int
get
()
=
R
.
mipmap
.
dk_crash_catch
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
onClick
(
context
:
Context
?)
{
kotlinTip
(
)
startUniversalActivity
(
context
,
FragmentIndex
.
FRAGMENT_CRASH
)
}
override
fun
onAppInit
(
context
:
Context
?)
{
CrashCaptureManager
.
instance
.
init
(
context
)
if
(
CrashCaptureConfig
.
isCrashCaptureOpen
)
{
CrashCaptureManager
.
instance
.
start
()
}
else
{
CrashCaptureManager
.
instance
.
stop
()
}
}
override
val
isInnerKit
:
Boolean
get
()
=
true
override
fun
innerKitId
():
String
{
return
"dokit_sdk_comm_ck_crash"
}
...
...
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureMainFragment.kt
0 → 100644
浏览文件 @
d2470e1a
package
com.didichuxing.doraemonkit.kit.crash
import
android.os.Bundle
import
android.text.format.Formatter
import
android.view.View
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.config.CrashCaptureConfig
import
com.didichuxing.doraemonkit.constant.BundleKey
import
com.didichuxing.doraemonkit.kit.core.BaseFragment
import
com.didichuxing.doraemonkit.kit.core.SettingItem
import
com.didichuxing.doraemonkit.kit.core.SettingItemAdapter
import
com.didichuxing.doraemonkit.kit.fileexplorer.FileExplorerFragment
import
com.didichuxing.doraemonkit.util.FileUtil
import
com.didichuxing.doraemonkit.widget.titlebar.HomeTitleBar
/**
* Created by wangxueying on 2020-06-30
*/
class
CrashCaptureMainFragment
:
BaseFragment
()
{
override
fun
onRequestLayout
():
Int
{
return
R
.
layout
.
dk_fragment_crash_capture_main
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
initview
()
}
private
fun
initview
()
{
val
titleBar
=
findViewById
<
HomeTitleBar
>(
R
.
id
.
title_bar
)
titleBar
.
setListener
(
object
:
HomeTitleBar
.
OnTitleBarClickListener
{
override
fun
onRightClick
()
{
finish
()
}
})
val
settingList
=
findViewById
<
RecyclerView
>(
R
.
id
.
setting_list
)
settingList
.
layoutManager
=
LinearLayoutManager
(
context
)
val
mSettingItemAdapter
=
SettingItemAdapter
(
context
)
mSettingItemAdapter
.
append
(
SettingItem
(
R
.
string
.
dk_crash_capture_switch
,
CrashCaptureConfig
.
isCrashCaptureOpen
))
mSettingItemAdapter
.
append
(
SettingItem
(
R
.
string
.
dk_crash_capture_look
,
R
.
mipmap
.
dk_more_icon
,
false
))
val
item
=
SettingItem
(
R
.
string
.
dk_crash_capture_clean_data
)
item
.
rightDesc
=
Formatter
.
formatFileSize
(
context
,
FileUtil
.
getDirectorySize
(
CrashCaptureManager
.
instance
.
crashCacheDir
))
mSettingItemAdapter
.
append
(
item
)
mSettingItemAdapter
.
setOnSettingItemSwitchListener
(
object
:
SettingItemAdapter
.
OnSettingItemSwitchListener
{
override
fun
onSettingItemSwitch
(
view
:
View
,
data
:
SettingItem
,
on
:
Boolean
)
{
if
(
data
.
desc
==
R
.
string
.
dk_crash_capture_switch
)
{
CrashCaptureConfig
.
isCrashCaptureOpen
=
on
if
(
on
)
{
CrashCaptureManager
.
instance
.
start
()
}
else
{
CrashCaptureManager
.
instance
.
stop
()
}
}
}
})
mSettingItemAdapter
.
setOnSettingItemClickListener
(
object
:
SettingItemAdapter
.
OnSettingItemClickListener
{
override
fun
onSettingItemClick
(
view
:
View
,
data
:
SettingItem
)
{
if
(
data
.
desc
==
R
.
string
.
dk_crash_capture_look
)
{
val
bundle
=
Bundle
()
bundle
.
putSerializable
(
BundleKey
.
DIR_KEY
,
CrashCaptureManager
.
instance
.
crashCacheDir
)
showContent
(
FileExplorerFragment
::
class
.
java
,
bundle
)
}
else
if
(
data
.
desc
==
R
.
string
.
dk_crash_capture_clean_data
)
{
CrashCaptureManager
.
instance
.
clearCacheHistory
()
data
.
rightDesc
=
Formatter
.
formatFileSize
(
context
,
FileUtil
.
getDirectorySize
(
CrashCaptureManager
.
instance
.
crashCacheDir
))
mSettingItemAdapter
.
notifyDataSetChanged
()
showToast
(
R
.
string
.
dk_crash_capture_clean_data
)
}
}
})
settingList
.
adapter
=
mSettingItemAdapter
}
}
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashCaptureManager.kt
0 → 100644
浏览文件 @
d2470e1a
package
com.didichuxing.doraemonkit.kit.crash
import
android.content.Context
import
android.os.Handler
import
android.os.HandlerThread
import
android.util.Log
import
android.widget.Toast
import
com.didichuxing.doraemonkit.R
import
com.didichuxing.doraemonkit.constant.CachesKey
import
com.didichuxing.doraemonkit.util.CacheUtils
import
com.didichuxing.doraemonkit.util.FileUtil
import
java.io.File
import
java.io.Serializable
import
java.util.Date
/**
* Created by wangxueying on 2020-06-30
*/
class
CrashCaptureManager
private
constructor
()
:
Thread
.
UncaughtExceptionHandler
{
companion
object
{
private
val
TAG
=
"CrashCaptureManager"
val
instance
:
CrashCaptureManager
=
CrashCaptureManager
()
}
private
val
mDefaultHandler
=
Thread
.
getDefaultUncaughtExceptionHandler
()
private
val
mHandler
:
Handler
private
var
mContext
:
Context
?
=
null
val
crashCacheDir
:
File
get
()
{
val
dir
=
File
(
mContext
!!
.
cacheDir
.
toString
()
+
File
.
separator
+
CachesKey
.
CRASH_HISTORY
)
if
(!
dir
.
exists
())
{
dir
.
mkdir
()
}
return
dir
}
private
val
crashCacheFile
:
File
get
()
{
val
fileName
=
Date
().
toString
()
return
File
(
crashCacheDir
.
toString
()
+
File
.
separator
+
fileName
)
}
init
{
val
handlerThread
=
HandlerThread
(
TAG
)
handlerThread
.
start
()
mHandler
=
Handler
(
handlerThread
.
looper
)
}
fun
init
(
context
:
Context
?)
{
mContext
=
context
?.
applicationContext
}
fun
start
()
{
Thread
.
setDefaultUncaughtExceptionHandler
(
this
)
}
fun
stop
()
{
Thread
.
setDefaultUncaughtExceptionHandler
(
mDefaultHandler
)
}
override
fun
uncaughtException
(
t
:
Thread
,
e
:
Throwable
)
{
//保存崩溃信息
CacheUtils
.
saveObject
(
Log
.
getStackTraceString
(
e
)
as
Serializable
,
crashCacheFile
)
//保存埋点数据
//DataPickManager.getInstance().saveData2Local() TODO("功能待实现")
post
(
Runnable
{
Toast
.
makeText
(
mContext
,
mContext
!!
.
getString
(
R
.
string
.
dk_crash_capture_tips
),
Toast
.
LENGTH_SHORT
).
show
()
})
postDelay
(
Runnable
{
mDefaultHandler
?.
uncaughtException
(
t
,
e
)
},
2000
)
}
private
fun
post
(
r
:
Runnable
)
{
mHandler
.
post
(
r
)
}
private
fun
postDelay
(
r
:
Runnable
,
delayMillis
:
Long
)
{
mHandler
.
postDelayed
(
r
,
delayMillis
)
}
fun
clearCacheHistory
()
{
FileUtil
.
deleteDirectory
(
crashCacheDir
)
}
}
\ No newline at end of file
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/kit/crash/CrashInfo.kt
0 → 100644
浏览文件 @
d2470e1a
package
com.didichuxing.doraemonkit.kit.crash
import
java.io.Serializable
/**
* Created by wangxueying on 2020-06-30
*/
class
CrashInfo
:
Serializable
{
var
tr
:
Throwable
?
=
null
var
time
:
Long
?
=
null
}
\ No newline at end of file
Android/kotlin/doraemonkit/src/main/java/com/didichuxing/doraemonkit/util/FormatUtil.kt
0 → 100644
浏览文件 @
d2470e1a
package
com.didichuxing.doraemonkit.util
import
java.util.Date
/**
* Created by wangxueying on 2020-06-30.
*/
object
FormatUtil
{
fun
format
(
time
:
Long
):
String
{
return
Date
(
time
).
toString
()
}
}
\ No newline at end of file
Android/kotlin/doraemonkit/src/main/res/layout/dk_fragment_crash_capture_main.xml
0 → 100644
浏览文件 @
d2470e1a
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/dk_color_FFFFFF"
android:orientation=
"vertical"
>
<com.didichuxing.doraemonkit.widget.titlebar.HomeTitleBar
android:id=
"@+id/title_bar"
android:layout_width=
"match_parent"
android:layout_height=
"89dp"
app:dkIcon=
"@mipmap/dk_close_icon_big"
app:dkTitle=
"@string/dk_kit_crash"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/setting_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</LinearLayout>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录