Android 10 openFileDescriptor застрял - PullRequest
       0

Android 10 openFileDescriptor застрял

0 голосов
/ 24 апреля 2020

на Android 10, при чтении файла с помощью openFIleDescriptor, есть шанс вызвать зависание системы. В том числе читайте картинки / видео в системе по содержанию URI.

Следующие журналы:

"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 flags=1 obj=0x766253c8 self=0x7090469c00
  | sysTid=13087 nice=0 cgrp=default sched=0/0 handle=0x7116618ed0
  | state=S schedstat=( 108515669119 27391137846 289434 ) utm=7602 stm=3249 core=7 HZ=100
  | stack=0x7ff9e76000-0x7ff9e78000 stackSize=8192KB
  | held mutexes=

  #00  pc 00000000000c14a4  /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)

  #01  pc 000000000007bb2c  /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)

  #02  pc 0000000000058dfc  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+244)

  #03  pc 0000000000059ce8  /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)

  #04  pc 0000000000059a8c  /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+180)

  #05  pc 000000000004df90  /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+120)

  #06  pc 00000000001500fc  /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+332)

  at android.os.BinderProxy.transactNative (Native method)

  at android.os.BinderProxy.transact (BinderProxy.java:510)

  at android.content.ContentProviderProxy.openTypedAssetFile (ContentProviderNative.java:703)

  at android.content.ContentResolver.openTypedAssetFileDescriptor (ContentResolver.java:1702)

  at android.content.ContentResolver.openAssetFileDescriptor (ContentResolver.java:1518)

  at android.content.ContentResolver.openFileDescriptor (ContentResolver.java:1353)

  at android.content.ContentResolver.openFileDescriptor (ContentResolver.java:1301)

Мой код ниже для чтения растрового изображения: url = content: // media / external / images / media / 940506

        Bitmap bitmap = null;
        try(ParcelFileDescriptor  pfd = context.getContentResolver().openFileDescriptor(uri, "r")) {
            if (pfd != null) {
                FileDescriptor fd = pfd.getFileDescriptor();
                bitmap = BitmapFactory.decodeFileDescriptor(fd, null, options);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...