JessYanCoding / JessYanCoding/AndroidAutoSize

AutoSize1.2.1版本导致线程调度抛异常Not in applications main thread

Đang mở
#359 11 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13.7k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

autosize/src/main/java/me/jessyan/autosize/utils/Preconditions.java中checkMainThread方法的调用导致线程异常,使用Thread或rxJava等线程,执行部分操作会触发"Not in applications main thread"异常。

具体表现:
1.Thread中进行下载并更新通知栏下载进度,下载完成后设置通知栏完成状态点击可安装,这时就会抛出IllegalStateException"Not in applications main thread",完成通知消息无法显示并无法弹出系统安装;
2.

private void setQRImage(String qrcodeString, ImageView mQrcodeImage, boolean isCicle) {
if (TextUtils.isEmpty(qrcodeString)) return;
Observable.create(new Observable.OnSubscribe() {
@Override
public void call(Subscriber subscriber) {
Bitmap bitmap;
try {
int size = (int) Utils.dpTopx(255f);
bitmap = QRCodeUtil.creatQrCode(qrcodeString, size, size, BitmapFactory.decodeResource(mQrcodeImage.getContext().getResources(), R.mipmap.app_icon), 0);
subscriber.onNext(!isCicle ? bitmap : BitmapUitl.drawRoval(BitmapUitl.ALL, bitmap));
} catch (WriterException e) {
e.printStackTrace();
subscriber.onError(e);
}

subscriber.onCompleted();
}
}).compose(TransformUtils.defaultSchedulers())
.subscribe(new Observer() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(Bitmap bitmap) {
mQrcodeImage.setImageBitmap(bitmap);
}
});
}
以上代码生成二维码,同样抛出IllegalStateException"Not in applications main thread"

3.同上使用RxJava call中使用Glide.get()方法获取Bitmap,调用两次时同样会抛出异常

4.使用友盟分享SDK进行小程序、单图分享功能,当图片为本地图片时无法进行分享,查看友盟SDK相关代码,同样使用了线程获取本地图片,获取时抛异常导致;

解决:

public static void checkMainThread() {
if (Looper.myLooper() != Looper.getMainLooper()) {
throw new IllegalStateException("Not in applications main thread");
}
}

不应该抛异常,调整成返回值供外部调用即可

public static boolean checkMainThread() {
return Looper.myLooper() == Looper.getMainLooper();
}

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.