Skip to content

Latest commit

 

History

History
175 lines (137 loc) · 5.7 KB

buglist.md

File metadata and controls

175 lines (137 loc) · 5.7 KB

1、ViewPager中fragment A,点击跳转切换到另外一个Fragment B(addFragment 添加B), 然后返回到A(回退栈顶的A)。A中的数据不刷新。尝试了在onResume中,添加更新,但是效果还是一样。

解决方案,1、引入事件总线RxBus.2、方法回调

2、适配Android 8.0 出现 java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

只有全屏不透明的活动才能请求方向.主要是manifest中定义了android:screenOrientation="portrait" 和设置半透明主题导致。

3、使用Rxbus时,退出Activity。然后从通知栏进入程序崩溃。

4、Retrofit gson解析数据QQ音乐歌词数据时,抛出异常,因为返回的数据不是一个完整的json数据。

  io.reactivex.exceptions.OnErrorNotImplementedException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $
  ....

返回数据格式jsonp格式:MusicJsonCallback({...})。 通过下面的解决方法,不会抛出异常。但是获得的String 数据只有MusicJsonCallback( .这部分 重要部分不知道去哪了...

Gson gson = new GsonBuilder()
        .setLenient()
        .create();

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create(gson))
        .build();

不得已,最后尝试重写GSON转换器。遇到一个大坑那就是ResponseBody //ResponseData中的流只能使用一次,我们先将流中的数据读出在byte数组中。这个方法中已经关闭了ResponseBody,所以不需要再关闭了

5、Observable 转换成 Observable

//lamba表达式
Observable.flatMap(T -> {
    return Observable.fromArray(S);
}
//Java表达式
Observable.flatMap(new Function<T, ObservableSource<?>>() {
                    @Override
                    public ObservableSource<?> apply(T tt) throws Exception {
                        return null;
                    }
                });

6、Retrofit 多个网络请求合并使用

 Observable.merge(QQApiServiceImpl.search(key, limit, page), XiamiServiceImpl.search(key, limit, page))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<List<Music>>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(List<Music> results) {
                        mView.showSearchResult(results);
                    }

                    @Override
                    public void onError(Throwable e) {
                        mView.showEmptyView();
                        mView.hideLoading();
                    }

                    @Override
                    public void onComplete() {
                        mView.hideLoading();
                    }
                });
               

7、封装MediaPlayer,prepareAsync()装载异常,还有getDuration会出现数据异常

    //异步装载数据
    player.prepareAsync();
    //设置异步装载完毕监听事件
    player.setOnPreparedListener(this);
    //设置异步装载进度
    player.setOnBufferingUpdateListener(this);

8、ViewPager中 多点触碰导致

java.lang.IllegalArgumentException: pointerIndex out of range
    at android.view.MotionEvent.nativeGetAxisValue(Native Method)
                      

原因分析: 在LrcView中,因为调用了requestDisallowInterceptTouchEvent来区分左右滑动和上下滑动, 所以会导致父类的view多点触摸有些情况下会出现数组溢出的情况. 解决办法

  • 利用try{}catch(){}抛出异常
  • 重写ViewPager中的onTouchEvent 和onInterceptTouchEvent。
public class MultiTouchViewPager extends ViewPager {

    public MultiTouchViewPager(Context context) {
        super(context);
    }

    public MultiTouchViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        try {
            return super.onTouchEvent(ev);
        } catch (IllegalArgumentException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        try {
            return super.onInterceptTouchEvent(ev);
        } catch (IllegalArgumentException ex) {
            ex.printStackTrace();
        }
        return false;
    }
}

9、InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.

10、重构数据库,当插入十几条数据或更多时,其中重复的数据更新数据库,不重复的添加进去,能不能用一条语句实现?

11、再次设计数据库,播放队列,播放历史设计成一种特殊的歌单数据。

12、增加setNextMediaPlayer方法时,抛出异常 E/MediaPlayer: next player is not prepared

13、Observable.flatmap 操作符的使用

14、Attempt to invoke interface method 接口 下载服务接口更新下载状态。

15、AudioManager控制播放

16、播放暂停恢复,音量变化

17、线控

18、对于ViewPager+Fragment+Tablayout中 懒加载优化。

19、getwidth()和getheight()已经过时使用point //屏幕宽高

     Displaydisplay = getWindowManager().getDefaultDisplay();

     Pointsize = newPoint();

     display.getSize(size);

     width = size.x;

     height = size.y;

20、Warning: com.tencent.smtt.export.external.DexLoader: can't find referenced class dalvik.system.VMStack 混淆问题

-dontwarn com.tencent.smtt.**
-keep class com.tencent.smtt.** { *; }