Skip to content

Commit

Permalink
修复 LogcatAdapter 获取条目出现数组越界的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
getActivity committed Feb 14, 2022
1 parent 57da324 commit de21de8
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 11 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

* 项目地址:[Github](https://github.com/getActivity/Logcat)[码云](https://gitee.com/getActivity/Logcat)

* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/Logcat/releases/download/10.2/Logcat.apk)
* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/Logcat/releases/download/10.3/Logcat.apk)

![](picture/demo_code.png)

Expand Down Expand Up @@ -53,7 +53,7 @@ dependencyResolutionManagement {
```groovy
dependencies {
// 日志调试框架:https://github.com/getActivity/Logcat
debugImplementation 'com.github.getActivity:Logcat:10.2'
debugImplementation 'com.github.getActivity:Logcat:10.3'
}
```

Expand Down Expand Up @@ -275,7 +275,7 @@ android.enableJetifier = true

![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/official_ccount.png)

#### Android 技术分享 QQ 群:78797078
#### Android 技术 Q 群:10047167

#### 如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 :monkey_face:就太:thumbsup:了。您的支持将鼓励我继续创作:octocat:

Expand Down
6 changes: 3 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
applicationId "com.hjq.logcat.demo"
minSdkVersion 16
targetSdkVersion 31
versionCode 1020
versionName "10.2"
versionCode 1030
versionName "10.3"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

Expand Down Expand Up @@ -65,7 +65,7 @@ dependencies {
implementation 'com.github.getActivity:TitleBar:9.3'

// 吐司框架:https://github.com/getActivity/ToastUtils
implementation 'com.github.getActivity:ToastUtils:10.2'
implementation 'com.github.getActivity:ToastUtils:10.3'

// 内存泄漏捕捉:https://github.com/square/leakcanary
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1'
Expand Down
4 changes: 2 additions & 2 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {

defaultConfig {
minSdkVersion 16
versionCode 1020
versionName "10.2"
versionCode 1030
versionName "10.3"
}

lintOptions {
Expand Down
24 changes: 21 additions & 3 deletions library/src/main/java/com/hjq/logcat/LogcatAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@
* time : 2020/01/24
* desc : 日志列表适配器
*/
@SuppressLint("NotifyDataSetChanged")
final class LogcatAdapter extends RecyclerView.Adapter<LogcatAdapter.ViewHolder> {

/** 最大日志数量限制(避免日志过多导致 OOM) */
/** 最大日志数量限制(避免日志过多导致出现 OOM) */
private static final int LOG_MAX_COUNT = 1000;
/** 达到阈值时删除的日志数量 */
private static final int LOG_REMOVE_COUNT = LOG_MAX_COUNT / 5;
Expand Down Expand Up @@ -204,6 +205,12 @@ void setOnItemLongClickListener(@Nullable OnItemLongClickListener listener) {
mItemLongClickListener = listener;
}

@Override
public void onViewDetachedFromWindow(ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
holder.onDetached();
}

@Override
public void onViewRecycled(@NonNull LogcatAdapter.ViewHolder holder) {
super.onViewRecycled(holder);
Expand Down Expand Up @@ -379,7 +386,14 @@ private void onBindView(LogcatInfo info, int position) {
}

/**
* ViewHolder 回收回调
* ViewHolder 解绑时回调
*/
public void onDetached() {
mHorizontalScrollView.removeCallbacks(mScrollRunnable);
}

/**
* ViewHolder 回收时回调
*/
public void onRecycled() {
mHorizontalScrollView.removeCallbacks(mScrollRunnable);
Expand All @@ -398,7 +412,11 @@ public void run() {
// java.lang.ArrayIndexOutOfBoundsException: length=163; index=-1
return;
}
LogcatInfo info = getItem(getLayoutPosition());
if (layoutPosition >= getItemCount()) {
// 避免数组出现越界
return;
}
LogcatInfo info = getItem(layoutPosition);
int scrollX = mScrollXSet.get(info.hashCode());
if (mHorizontalScrollView.getScrollX() == scrollX) {
return;
Expand Down

0 comments on commit de21de8

Please sign in to comment.