示例参考:std::string filename(strBuf, strSize); // 获取rawfile指针对象 RawFile *rawFile = OH_ResourceManager_OpenRawFile(mNativeResMgr, filename.c_str()); if (rawFile != nullptr) { OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Manager", "OH_ResourceManager_OpenRawFile success"); } // s_rawFile = rawFile; RawFileDescriptor descriptor; OH_ResourceManager_GetRawFileDescriptor(rawFile, descriptor); int fd = descriptor.fd; std::thread mythread([rawFile, fd]() { std::thread::id this_id = std::this_thread::get_id(); OH_LOG_INFO(LOG_APP, "mythread detached"); int ret = OH_QoS_SetThreadQoS(QOS_USER_INTERACTIVE); OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Manager", "WWW QoS %{public}d", ret); /*long len = OH_ResourceManager_GetRawFileSize(rawFile); std::unique_ptr<uint8_t[]> data= std::make_unique<uint8_t[]>(len); int res = OH_ResourceManager_ReadRawFile(rawFile, data.get(), len); OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Manager", "%{public}d, %{public}d", data.get()[0], data.get()[1]); */ uint8_t buf[128]; int size = read(fd, buf, 128); OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Manager", "%{public}d, %{public}d", buf[0], buf[1]); OH_ResourceManager_CloseRawFile(rawFile); }); mythread.detach();
示例参考: