Commit 8030086e authored by 周文华's avatar 周文华

【调整】1.调整加载时机减少短时间内存占用。2.开启largeHeap。

parent 32090825
......@@ -21,6 +21,7 @@
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/logo"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/Theme.PDFViewerScannerWhite"
android:usesCleartextTraffic="true"
......
......@@ -39,6 +39,7 @@ import com.google.mlkit.vision.documentscanner.GmsDocumentScanningResult
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.io.File
class MainPresenter(
......@@ -49,7 +50,10 @@ class MainPresenter(
private val TAG = "MainPresenter"
fun getDocumentAppDir(): File {
val appDir = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), context.packageName)
val appDir = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),
context.packageName
)
if (!appDir.exists())
appDir.exists()
return appDir
......@@ -68,32 +72,34 @@ class MainPresenter(
}
fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) {
mainRefreshData = true
val start = System.currentTimeMillis()
Log.d("glc", "pdfs 清理前:" + pdfDocuments.size)
context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
}
val pdfs = initAllPdfData()
pdfs.map { it.state = PdfBoxUtils.checkPdfEncryption(it.path) }
pdfDocuments.clear()
wordDocuments.clear()
excelDocuments.clear()
pptDocuments.clear()
Log.d("glc", "pdfs:" + pdfs.size)
pdfDocuments.addAll(pdfs)
Log.d("glc", "添加了 pdfDocuments:" + pdfDocuments.size)
wordDocuments.addAll(initAllWordData())
excelDocuments.addAll(initAllExcelData())
pptDocuments.addAll(initAllPptData())
mainRefreshData = false
lifecycleScope.launch(Dispatchers.Main) {
val end = System.currentTimeMillis()
val time = end - start
LogEx.logDebug(TAG, "time=$time")
mainView.refreshPageList()
if (!mainRefreshData) {
mainRefreshData = true
val start = System.currentTimeMillis()
Log.d("glc", "pdfs 清理前:" + pdfDocuments.size)
context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile()
ConstObject.haveSaveDemo = true
}
val pdfs = initAllPdfData()
pdfs.map { it.state = PdfBoxUtils.checkPdfEncryption(it.path) }
pdfDocuments.clear()
wordDocuments.clear()
excelDocuments.clear()
pptDocuments.clear()
Log.d("glc", "pdfs:" + pdfs.size)
pdfDocuments.addAll(pdfs)
Log.d("glc", "添加了 pdfDocuments:" + pdfDocuments.size)
wordDocuments.addAll(initAllWordData())
excelDocuments.addAll(initAllExcelData())
pptDocuments.addAll(initAllPptData())
mainRefreshData = false
withContext(Dispatchers.Main) {
val end = System.currentTimeMillis()
val time = end - start
LogEx.logDebug(TAG, "time=$time")
mainView.refreshPageList()
}
}
}
......@@ -120,7 +126,8 @@ class MainPresenter(
RECENT_DATA_TYPE -> {
data.forEach { recentFilter(recentList, it) }
return data.filter { it.lastViewTime != 0L }.sortedByDescending { it.lastViewTime }
return data.filter { it.lastViewTime != 0L }
.sortedByDescending { it.lastViewTime }
}
BOOKMARK_DATA_TYPE -> {
......@@ -145,7 +152,8 @@ class MainPresenter(
RECENT_DATA_TYPE -> {
data.forEach { recentFilter(recentList, it) }
return data.filter { it.lastViewTime != 0L }.sortedByDescending { it.lastViewTime }
return data.filter { it.lastViewTime != 0L }
.sortedByDescending { it.lastViewTime }
}
BOOKMARK_DATA_TYPE -> {
......@@ -169,7 +177,8 @@ class MainPresenter(
RECENT_DATA_TYPE -> {
data.forEach { recentFilter(recentList, it) }
return data.filter { it.lastViewTime != 0L }.sortedByDescending { it.lastViewTime }
return data.filter { it.lastViewTime != 0L }
.sortedByDescending { it.lastViewTime }
}
BOOKMARK_DATA_TYPE -> {
......@@ -193,7 +202,8 @@ class MainPresenter(
RECENT_DATA_TYPE -> {
data.forEach { recentFilter(recentList, it) }
return data.filter { it.lastViewTime != 0L }.sortedByDescending { it.lastViewTime }
return data.filter { it.lastViewTime != 0L }
.sortedByDescending { it.lastViewTime }
}
BOOKMARK_DATA_TYPE -> {
......@@ -225,7 +235,8 @@ class MainPresenter(
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_PDF)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pdf") }?.absolutePath ?: ""
demoDocumentBean.path =
demoFile.listFiles()?.find { it.name.contains(".pdf") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
......@@ -245,7 +256,8 @@ class MainPresenter(
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_DOC, ConstObject.MIME_TYPE_DOCX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".docx") }?.absolutePath ?: ""
demoDocumentBean.path =
demoFile.listFiles()?.find { it.name.contains(".docx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
......@@ -265,7 +277,8 @@ class MainPresenter(
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_XLS, ConstObject.MIME_TYPE_XLSX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".xlsx") }?.absolutePath ?: ""
demoDocumentBean.path =
demoFile.listFiles()?.find { it.name.contains(".xlsx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
val documentList = list.map {
......@@ -285,7 +298,8 @@ class MainPresenter(
val demoFile = File(context.filesDir, "demo")
val selectionArgs = arrayOf(ConstObject.MIME_TYPE_PPT, ConstObject.MIME_TYPE_PPTX)
demoDocumentBean.path = demoFile.listFiles()?.find { it.name.contains(".pptx") }?.absolutePath ?: ""
demoDocumentBean.path =
demoFile.listFiles()?.find { it.name.contains(".pptx") }?.absolutePath ?: ""
val list = context.getMediaFile(selectionArgs = selectionArgs)
......@@ -390,10 +404,17 @@ class MainPresenter(
val result = file.renameTo(newFile)
if (result) {
when (documentPageFragment.type) {
TYPE_PDF -> pdfDocuments.find { it.path == file.absolutePath }?.path = newFile.absolutePath
TYPE_WORD -> wordDocuments.find { it.path == file.absolutePath }?.path = newFile.absolutePath
TYPE_EXCEL -> excelDocuments.find { it.path == file.absolutePath }?.path = newFile.absolutePath
TYPE_PPT -> pptDocuments.find { it.path == file.absolutePath }?.path = newFile.absolutePath
TYPE_PDF -> pdfDocuments.find { it.path == file.absolutePath }?.path =
newFile.absolutePath
TYPE_WORD -> wordDocuments.find { it.path == file.absolutePath }?.path =
newFile.absolutePath
TYPE_EXCEL -> excelDocuments.find { it.path == file.absolutePath }?.path =
newFile.absolutePath
TYPE_PPT -> pptDocuments.find { it.path == file.absolutePath }?.path =
newFile.absolutePath
}
}
} catch (e: Exception) {
......@@ -404,23 +425,28 @@ class MainPresenter(
}
}
fun deleteDocument(path: String, documentPageFragment: DocumentPageFragment) = lifecycleScope.launch(Dispatchers.IO) {
val flag = File(path).delete()
if (flag) {
when (documentPageFragment.type) {
TYPE_PDF -> pdfDocuments.removeIf { it.path == path }
TYPE_WORD -> wordDocuments.removeIf { it.path == path }
TYPE_EXCEL -> excelDocuments.removeIf { it.path == path }
TYPE_PPT -> pptDocuments.removeIf { it.path == path }
}
launch(Dispatchers.Main) {
documentPageFragment.refreshData()
fun deleteDocument(path: String, documentPageFragment: DocumentPageFragment) =
lifecycleScope.launch(Dispatchers.IO) {
val flag = File(path).delete()
if (flag) {
when (documentPageFragment.type) {
TYPE_PDF -> pdfDocuments.removeIf { it.path == path }
TYPE_WORD -> wordDocuments.removeIf { it.path == path }
TYPE_EXCEL -> excelDocuments.removeIf { it.path == path }
TYPE_PPT -> pptDocuments.removeIf { it.path == path }
}
launch(Dispatchers.Main) {
documentPageFragment.refreshData()
}
}
}
}
}
fun changeBookmark(path: String, isBookmarked: Boolean, documentPageFragment: DocumentPageFragment) =
fun changeBookmark(
path: String,
isBookmarked: Boolean,
documentPageFragment: DocumentPageFragment
) =
lifecycleScope.launch(Dispatchers.IO) {
if (isBookmarked) {
SpStringUtils.addSpString(BOOKMARK_KEY, path)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment