Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lify
RvApp
Commits
1aeabaf4
Commit
1aeabaf4
authored
Jul 03, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
闪退日志捕捉与修改启动页图片
parent
8face6ae
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
192 additions
and
0 deletions
+192
-0
RvClientApplication.java
RvClient/src/main/java/com/test/rv/RvClientApplication.java
+2
-0
CrashHandler.java
Utils/src/main/java/com/base/utils/CrashHandler.java
+190
-0
live_backgroud3.png
module_home/src/main/res/drawable-xhdpi/live_backgroud3.png
+0
-0
No files found.
RvClient/src/main/java/com/test/rv/RvClientApplication.java
View file @
1aeabaf4
...
@@ -7,6 +7,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
...
@@ -7,6 +7,7 @@ import com.alibaba.android.arouter.launcher.ARouter;
import
com.baidu.mapapi.CoordType
;
import
com.baidu.mapapi.CoordType
;
import
com.baidu.mapapi.SDKInitializer
;
import
com.baidu.mapapi.SDKInitializer
;
import
com.base.utils.Config
;
import
com.base.utils.Config
;
import
com.base.utils.CrashHandler
;
import
com.base.utils.eventbusmodel.EventMimcRouse
;
import
com.base.utils.eventbusmodel.EventMimcRouse
;
import
com.base.utils.eventbusmodel.EventNoActivity
;
import
com.base.utils.eventbusmodel.EventNoActivity
;
import
com.base.utils.eventbusmodel.EventRestartApp
;
import
com.base.utils.eventbusmodel.EventRestartApp
;
...
@@ -41,6 +42,7 @@ public class RvClientApplication extends FrameApp {
...
@@ -41,6 +42,7 @@ public class RvClientApplication extends FrameApp {
@Override
@Override
public
void
onCreate
()
{
public
void
onCreate
()
{
super
.
onCreate
();
super
.
onCreate
();
CrashHandler
.
getInstance
().
init
(
this
);
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
SDKInitializer
.
initialize
(
this
);
SDKInitializer
.
initialize
(
this
);
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
...
...
Utils/src/main/java/com/base/utils/CrashHandler.java
0 → 100644
View file @
1aeabaf4
package
com
.
base
.
utils
;
import
android.content.Context
;
import
android.content.pm.PackageInfo
;
import
android.content.pm.PackageManager
;
import
android.os.SystemClock
;
import
android.util.Log
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.io.Writer
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* <h3>全局捕获异常</h3>
* <br>
* 当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志
*/
public
class
CrashHandler
implements
Thread
.
UncaughtExceptionHandler
{
public
static
String
TAG
=
"MyCrash"
;
// 系统默认的UncaughtException处理类
private
Thread
.
UncaughtExceptionHandler
mDefaultHandler
;
private
static
CrashHandler
instance
=
new
CrashHandler
();
private
Context
mContext
;
// 用来存储设备信息和异常信息
private
Map
<
String
,
String
>
infos
=
new
HashMap
<
String
,
String
>();
// 用于格式化日期,作为日志文件名的一部分
private
DateFormat
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
/**
* 保证只有一个CrashHandler实例
*/
private
CrashHandler
()
{
}
/**
* 获取CrashHandler实例 ,单例模式
*/
public
static
CrashHandler
getInstance
()
{
return
instance
;
}
/**
* 初始化
*
* @param context
*/
public
void
init
(
Context
context
)
{
mContext
=
context
;
// 获取系统默认的UncaughtException处理器
mDefaultHandler
=
Thread
.
getDefaultUncaughtExceptionHandler
();
// 设置该CrashHandler为程序的默认处理器
Thread
.
setDefaultUncaughtExceptionHandler
(
this
);
}
/**
* 当UncaughtException发生时会转入该函数来处理
*/
@Override
public
void
uncaughtException
(
Thread
thread
,
Throwable
ex
)
{
if
(!
handleException
(
ex
)
&&
mDefaultHandler
!=
null
)
{
// 如果用户没有处理则让系统默认的异常处理器来处理
mDefaultHandler
.
uncaughtException
(
thread
,
ex
);
}
else
{
SystemClock
.
sleep
(
3000
);
// 退出程序
android
.
os
.
Process
.
killProcess
(
android
.
os
.
Process
.
myPid
());
System
.
exit
(
1
);
}
}
/**
* 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
*
* @param ex
* @return true:如果处理了该异常信息; 否则返回false.
*/
private
boolean
handleException
(
Throwable
ex
)
{
if
(
ex
==
null
)
return
false
;
try
{
// 收集设备参数信息
collectDeviceInfo
(
mContext
);
// 保存日志文件
saveCrashInfoFile
(
ex
);
SystemClock
.
sleep
(
3000
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
true
;
}
/**
* 收集设备参数信息
*
* @param ctx
*/
public
void
collectDeviceInfo
(
Context
ctx
)
{
try
{
PackageManager
pm
=
ctx
.
getPackageManager
();
PackageInfo
pi
=
pm
.
getPackageInfo
(
ctx
.
getPackageName
(),
PackageManager
.
GET_ACTIVITIES
);
if
(
pi
!=
null
)
{
String
versionName
=
pi
.
versionName
+
""
;
String
versionCode
=
pi
.
versionCode
+
""
;
infos
.
put
(
"versionName"
,
versionName
);
infos
.
put
(
"versionCode"
,
versionCode
);
infos
.
put
(
"package"
,
pi
.
packageName
);
}
}
catch
(
PackageManager
.
NameNotFoundException
e
)
{
Log
.
e
(
TAG
,
"an error occured when collect package info"
,
e
);
}
}
/**
* 保存错误信息到文件中
*
* @param ex
* @return 返回文件名称, 便于将文件传送到服务器
* @throws Exception
*/
private
String
saveCrashInfoFile
(
Throwable
ex
)
throws
Exception
{
StringBuffer
sb
=
new
StringBuffer
();
try
{
SimpleDateFormat
sDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
String
date
=
sDateFormat
.
format
(
new
java
.
util
.
Date
());
sb
.
append
(
"\r\n"
+
date
+
"\n"
);
for
(
Map
.
Entry
<
String
,
String
>
entry
:
infos
.
entrySet
())
{
String
key
=
entry
.
getKey
();
String
value
=
entry
.
getValue
();
sb
.
append
(
key
+
"="
+
value
+
"\n"
);
}
Writer
writer
=
new
StringWriter
();
PrintWriter
printWriter
=
new
PrintWriter
(
writer
);
ex
.
printStackTrace
(
printWriter
);
Throwable
cause
=
ex
.
getCause
();
while
(
cause
!=
null
)
{
cause
.
printStackTrace
(
printWriter
);
cause
=
cause
.
getCause
();
}
printWriter
.
flush
();
printWriter
.
close
();
String
result
=
writer
.
toString
();
sb
.
append
(
result
);
String
fileName
=
writeFile
(
sb
.
toString
());
return
fileName
;
}
catch
(
Exception
e
)
{
Log
.
e
(
TAG
,
"an error occured while writing file..."
,
e
);
sb
.
append
(
"an error occured while writing file...\r\n"
);
writeFile
(
sb
.
toString
());
}
return
null
;
}
private
String
writeFile
(
String
sb
)
throws
Exception
{
String
time
=
formatter
.
format
(
new
Date
());
String
fileName
=
"crash-"
+
time
+
".log"
;
String
path
=
getGlobalpath
();
File
dir
=
new
File
(
path
);
if
(!
dir
.
exists
())
dir
.
mkdirs
();
FileOutputStream
fos
=
new
FileOutputStream
(
path
+
fileName
,
true
);
fos
.
write
(
sb
.
getBytes
());
fos
.
flush
();
fos
.
close
();
return
fileName
;
}
public
String
getGlobalpath
()
{
// return mContext.getCacheDir().getPath() + File.separator + "crash" + File.separator;
// return Environment.getExternalStorageDirectory().getPath() + File.separator + "crash" + File.separator;
return
mContext
.
getExternalCacheDir
().
getPath
()
+
File
.
separator
+
"crash"
+
File
.
separator
;
}
}
\ No newline at end of file
module_home/src/main/res/drawable-xhdpi/live_backgroud3.png
View replaced file @
8face6ae
View file @
1aeabaf4
21.1 KB
|
W:
|
H:
195 KB
|
W:
|
H:
2-up
Swipe
Onion skin
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment