JessYanCoding / JessYanCoding/AndroidAutoSize

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

Ouverte
#359 11 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
13.7k
Forks
2k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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();
}

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.