Skip to content

Commit e565b50

Browse files
committed
修复多线程状态上出现静态空值的问题
1 parent 1bb9ca2 commit e565b50

File tree

6 files changed

+39
-18
lines changed

6 files changed

+39
-18
lines changed

Logcat.apk

295 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#### 集成步骤
1010

1111
dependencies {
12-
debugImplementation 'com.hjq:logcat:6.9'
12+
debugImplementation 'com.hjq:logcat:8.0'
1313
}
1414

1515
#### 使用方式

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ android {
77
applicationId "com.hjq.logcat.demo"
88
minSdkVersion 14
99
targetSdkVersion 28
10-
versionCode 69
11-
versionName "6.9"
10+
versionCode 80
11+
versionName "8.0"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414
buildTypes {

library/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
defaultConfig {
1111
minSdkVersion 14
1212
targetSdkVersion 26
13-
versionCode 69
14-
versionName "6.9"
13+
versionCode 80
14+
versionName "8.0"
1515
}
1616
}
1717

@@ -26,7 +26,7 @@ publish {
2626
userOrg = 'getactivity'
2727
groupId = 'com.hjq'
2828
artifactId = 'logcat'
29-
version = '6.9'
29+
version = '8.0'
3030
description = 'This is to help developers quickly see the logging framework they want'
3131
website = "https://github.com/getActivity/Logcat"
3232
}

library/src/main/java/com/hjq/logcat/LogcatActivity.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -510,10 +510,21 @@ public void onBackPressed() {
510510
moveTaskToBack(false);
511511
}
512512

513+
@Override
514+
protected void onResume() {
515+
LogcatManager.resume();
516+
super.onResume();
517+
}
518+
519+
@Override
520+
protected void onPause() {
521+
LogcatManager.pause();
522+
super.onPause();
523+
}
524+
513525
@Override
514526
protected void onDestroy() {
515-
// 把监听对象置空,不然会导致内存泄漏
516-
LogcatManager.start(null);
527+
LogcatManager.destroy();
517528
super.onDestroy();
518529
}
519530
}

library/src/main/java/com/hjq/logcat/LogcatManager.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
final class LogcatManager {
1717

18+
/** 日志捕捉监听对象 */
1819
private static volatile Listener sListener;
1920
/** 日志捕捉标记 */
2021
private static volatile boolean FLAG_WORK;
@@ -25,10 +26,8 @@ final class LogcatManager {
2526
* 开始捕捉
2627
*/
2728
static void start(Listener listener) {
28-
if (sListener == null) {
29-
FLAG_WORK = true;
30-
new Thread(new LogRunnable()).start();
31-
}
29+
FLAG_WORK = true;
30+
new Thread(new LogRunnable()).start();
3231
sListener = listener;
3332
}
3433

@@ -37,9 +36,10 @@ static void start(Listener listener) {
3736
*/
3837
static void resume() {
3938
FLAG_WORK = true;
40-
if (sListener != null && !LOG_BACKUP.isEmpty()) {
39+
final Listener listener = sListener;
40+
if (listener != null && !LOG_BACKUP.isEmpty()) {
4141
for (LogcatInfo info : LOG_BACKUP) {
42-
sListener.onReceiveLog(info);
42+
listener.onReceiveLog(info);
4343
}
4444
}
4545
LOG_BACKUP.clear();
@@ -52,6 +52,15 @@ static void pause() {
5252
FLAG_WORK = false;
5353
}
5454

55+
/**
56+
* 停止捕捉
57+
*/
58+
static void destroy() {
59+
FLAG_WORK = false;
60+
// 把监听对象置空,不然会导致内存泄漏
61+
sListener = null;
62+
}
63+
5564
/**
5665
* 清空日志
5766
*/
@@ -77,10 +86,11 @@ public void run() {
7786
continue;
7887
}
7988
if (FLAG_WORK) {
80-
if (sListener != null) {
81-
LogcatInfo info = LogcatInfo.create(line);
82-
if (info != null) {
83-
sListener.onReceiveLog(info);
89+
LogcatInfo info = LogcatInfo.create(line);
90+
if (info != null) {
91+
final Listener listener = sListener;
92+
if (listener != null) {
93+
listener.onReceiveLog(info);
8494
}
8595
}
8696
} else {

0 commit comments

Comments
 (0)