我面临的问题是,当尝试保存对使用此 URI content://xx.xxx.xxx.fileprovider/external/Download/Sync/FileName.pdf打开的 PDF 文档的 更改时,我所做的任何更改都不会保存关闭文档后。但是,当我使用创建另一种 URI 格式的示例应用程序时,例如content://xx.xxx.xxx.file_provider/file%253A%252F%252F%252Fstorage%252Femulated%252F0%252FDownload%252FSync%252FFileName%252F%252FEY .pdf更改已成功保存。我也试过ACTION_EDIT
val file = File(fileModel.path)
val uri = if (Build.VERSION.SDK_INT >= 24) {
FileProvider.getUriForFile(activity?.applicationContext!!, "$APP_ID.fileprovider", file)
} else {
Uri.fromFile(file)
}
val mime = activity?.applicationContext!!.contentResolver.getType(uri)
val pdfIntent = Intent(Intent.ACTION_VIEW)
pdfIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
pdfIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
pdfIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
pdfIntent.setDataAndType(uri, mime)
val packageManager = activity?.applicationContext?.packageManager
val activities = packageManager!!.queryIntentActivities(pdfIntent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolvedIntentInfo in activities) {
val packageName = resolvedIntentInfo.activityInfo.packageName
activity?.applicationContext?.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
activity?.applicationContext?.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
}
if (pdfIntent.resolveActivity(activity!!.packageManager) != null) {
//startActivity(Intent.createChooser(pdfIntent, "Open"))
startActivity(pdfIntent)
}
Run Code Online (Sandbox Code Playgroud) 如果我们有一个这样的对象
object Repo { var activeMovies: ArrayList<Movie>? = null }
Run Code Online (Sandbox Code Playgroud)
然后我们这样称呼它来分配一个值
Repo.activeMovies = movieList
Run Code Online (Sandbox Code Playgroud)
实例化它的活动完成后,是否会收集垃圾?
我知道这可能是一个非常基本的问题,但是如果使用Kotlin中的object类型,我将无法理解其生命周期。