Android bug 记录

来源:互联网 发布:烟台南山学院教务网络 编辑:程序博客网 时间:2024/05/16 10:06

华为 荣耀 6 上 popwindow 默认点击空白区域不会消失,给 popwindow 设置背景就好了


oppo 手机上,VideoView 在调用 start() 之后,立即 pause() 或者 在 setOnPreparedListener 的毁掉中 pause() 中都会导致黑屏,解决

mVideoView.start()mVideoView.setOnPreparedListener{     mVideoView.postDelayed({mVideoView.pause()}, 10)}

RecyclerView 上拉加载导致的数据重复,代码如下

ScrollListener

private void initialScrollListener() {        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                LinearLayoutManager lm = (LinearLayoutManager) recyclerView.getLayoutManager();                int totalItemCount = recyclerView.getAdapter().getItemCount();                int lastVisibleItemPosition = lm.findLastVisibleItemPosition();                int visibleItemCount = recyclerView.getChildCount();                if (newState == RecyclerView.SCROLL_STATE_IDLE                        && lastVisibleItemPosition == totalItemCount - 1                        && visibleItemCount > 0) {                    //加载更多                    if (adapter != null && adapter.getItemCount() > 6) {                 KtAllCourseFragmentAgent.Companion.findByTag(AllCourseFragment.this, adapter.tag, page);                    }                }            }        });    }

如上代码中,在实际运行的时候,发现 KtAllCourseFragmentAgent.Companion.findByTag(AllCourseFragment.this, adapter.tag, page); 这行代码,同时执行了不止一次,再看我添加数据的代码:

attach data

public void attach(ArrayList<CourseVo> courseVos, String tag, int page) {        if (page == 0) {            adapter.setCourseVos(courseVos);        } else {            if (this.page == page) {                adapter.addCourseVos(courseVos);            }        }        adapter.tag = tag;        if (courseVos != null && !courseVos.isEmpty()) {            this.page = page + 1;        }    }

adapter add data

public void addCourseVos(List<CourseVo> vos) {        int start = courseVos.size();        courseVos.addAll(vos);        notifyItemRangeInserted(start, vos.size());

以上代码最终导致了,数据的重复错乱。

解决办法代码:

synchronized (AllCourseFragment.this) {                           KtAllCourseFragmentAgent.Companion.findByTag(AllCourseFragment.this, adapter.tag, page);                        }

论 java 基础的重要性!

原创粉丝点击