Skip to content

引入后会造成跟 SwipeRefreshLayout 冲突引起闪退 #68

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
lynnzc opened this issue Jan 4, 2019 · 9 comments
Closed

引入后会造成跟 SwipeRefreshLayout 冲突引起闪退 #68

lynnzc opened this issue Jan 4, 2019 · 9 comments
Labels
bug Something isn't working

Comments

@lynnzc
Copy link

lynnzc commented Jan 4, 2019

异常类型:引入后会造成跟 SwipeRefreshLayout 冲突引起闪退

手机型号:

手机系统版本: 均会有问题

matrix版本:0.4.10

gradle版本:4.6

问题描述:引入后,使用了 SwipeRefreshLayout 的页面,后退时,会在 onDestroy 回调过程中引起闪退,把 Matrix 去掉后即正常。

详细错误日志:
Fatal Exception: java.lang.RuntimeException: Unable to destroy activity {com.borderxlab.dogfood.bieyang/com.borderxlab.bieyang.presentation.beauty.BeautyExpressActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
       at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4458)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4476)
       at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6669)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
       at android.support.v4.widget.SwipeRefreshLayout.setColorViewAlpha(SwipeRefreshLayout.java:234)
       at android.support.v4.widget.SwipeRefreshLayout.reset(SwipeRefreshLayout.java:209)
       at android.support.v4.widget.SwipeRefreshLayout.onDetachedFromWindow(SwipeRefreshLayout.java:230)
       at android.view.View.dispatchDetachedFromWindow(View.java:18400)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3777)
       at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3769)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5359)
       at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5330)
       at android.view.ViewGroup.removeView(ViewGroup.java:5261)
       at android.support.v4.view.ViewPager.removeView(ViewPager.java:1507)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1550)
       at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
       at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
       at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:3260)
       at android.support.v4.app.FragmentController.dispatchDestroy(FragmentController.java:274)
       at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:419)
       at android.support.v7.app.AppCompatActivity.onDestroy(AppCompatActivity.java:210)
       at android.app.Activity.performDestroy(Activity.java:7395)
       at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1306)
       at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4443)
       at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4476)
       at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6669)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 4, 2019

是哪个版本的v4?我看了下源码SwipeRefreshLayout好像没有对应的代码

@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 4, 2019

将crash对应的SwipeRefreshLayout代码截图看下?

@lynnzc
Copy link
Author

lynnzc commented Jan 7, 2019

support library version is 28.0.0.

@lynnzc
Copy link
Author

lynnzc commented Jan 7, 2019

snippets

protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        this.reset();
    }

void reset() {
        this.mCircleView.clearAnimation();
        this.mProgress.stop();
        this.mCircleView.setVisibility(8);
        this.setColorViewAlpha(255);
        if (this.mScale) {
            this.setAnimationProgress(0.0F);
        } else {
            this.setTargetOffsetTopAndBottom(this.mOriginalOffsetTop - this.mCurrentTargetOffsetTop);
        }

        this.mCurrentTargetOffsetTop = this.mCircleView.getTop();
    }

private void setColorViewAlpha(int targetAlpha) {
        this.mCircleView.getBackground().setAlpha(targetAlpha);
        this.mProgress.setAlpha(targetAlpha);
    }

@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 7, 2019

可以看下你的matrix gradle plugin的配置?

@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 7, 2019

build.gradle文件中的matrix配置

@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 7, 2019

image

看了下源码,这里应该是circleView的background为空,但理论上不会为空才对,new这个circleView的时候就设置了background。我这边暂时没有复现这个问题,是否其他地方给这个circleView的background设置了一个资源,但是这个资源被当做无用资源删除了?

@jqctop1
Copy link
Collaborator

jqctop1 commented Jan 7, 2019

@lynnzc 这个问题可以参看这个issue,#33 后续会修复哈

@txfelixzhou txfelixzhou added the bug Something isn't working label Jan 7, 2019
@lynnzc
Copy link
Author

lynnzc commented Jan 8, 2019

@jqctop1 thx, 了解了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants