Commit 42a8c17a authored by leichao.gao's avatar leichao.gao

优化fragment 加载

parent c933e439
...@@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment ...@@ -8,6 +8,7 @@ import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
abstract class BaseFragment<T : ViewBinding> : Fragment() { abstract class BaseFragment<T : ViewBinding> : Fragment() {
protected var isInitialized = false
protected abstract val binding: T protected abstract val binding: T
override fun onCreateView( override fun onCreateView(
......
package com.base.pdfviewerscannerwhite.ui.main package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.util.Log
import android.view.View import android.view.View
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
...@@ -55,6 +56,7 @@ class DocumentFragment( ...@@ -55,6 +56,7 @@ class DocumentFragment(
var uiMode = UI_MODE_NORMAL var uiMode = UI_MODE_NORMAL
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun setView() { override fun setView() {
when (dataType) { when (dataType) {
...@@ -75,6 +77,15 @@ class DocumentFragment( ...@@ -75,6 +77,15 @@ class DocumentFragment(
initPageViewer() initPageViewer()
initTabLayout() initTabLayout()
initSearchAdapter() initSearchAdapter()
isInitialized = true
}
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
if(hidden){
return
}
currentPage.refreshData()
} }
private fun initSearchAdapter() { private fun initSearchAdapter() {
......
...@@ -2,6 +2,7 @@ package com.base.pdfviewerscannerwhite.ui.main ...@@ -2,6 +2,7 @@ package com.base.pdfviewerscannerwhite.ui.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.util.Log
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.pdfviewerscannerwhite.bean.ConstObject import com.base.pdfviewerscannerwhite.bean.ConstObject
...@@ -48,23 +49,29 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu ...@@ -48,23 +49,29 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
override fun setView() { override fun setView() {
documentPresenter = DocumentPresenter(requireContext(), this, type, lifecycleScope) documentPresenter = DocumentPresenter(requireContext(), this, type, lifecycleScope)
initAdapter() initAdapter()
isInitialized = true
Log.d("glc","我被调用了setView")
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
refreshData() refreshData()
} }
fun refreshData() { fun refreshData() {
if (isVisible) { if (isInitialized && !isHidden) {
val list = (requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType) val list =
(requireActivity() as MainActivity).mainPresenter.getDataByType(type, dataType)
val sortList = sortByMode(list) val sortList = sortByMode(list)
sortList.forEach { sortList.forEach {
LogEx.logDebug(TAG, "sortByMode ${File(it.path).lastModified().toFormatTime3()}") LogEx.logDebug(TAG, "sortByMode ${File(it.path).lastModified().toFormatTime3()}")
} }
adapter.submitList(sortList) adapter.submitList(sortList)
binding.llEmpty.isVisible = list.isEmpty() binding.llEmpty.isVisible = list.isEmpty()
Log.d("glc", "加载数据成功:"+type+" list:"+list.size)
}else {
Log.d("glc", "加载数据失败:"+type)
} }
} }
...@@ -180,7 +187,10 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu ...@@ -180,7 +187,10 @@ class DocumentPageFragment() : BaseFragment<FragmentDocumentPageBinding>(), Docu
fun getSearchItems(search: String): List<DocumentBean> { fun getSearchItems(search: String): List<DocumentBean> {
if (isVisible) { if (isVisible) {
return adapter.items.filter { File(it.path).name.lowercase(Locale.ENGLISH).contains(search.lowercase(Locale.ENGLISH)) } return adapter.items.filter {
File(it.path).name.lowercase(Locale.ENGLISH)
.contains(search.lowercase(Locale.ENGLISH))
}
} }
return listOf() return listOf()
} }
......
...@@ -4,6 +4,7 @@ import android.app.Activity ...@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.View import android.view.View
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
...@@ -56,17 +57,19 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -56,17 +57,19 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
LogEx.logDebug(TAG, "initView") LogEx.logDebug(TAG, "initView")
mainPresenter = MainPresenter(this, this, lifecycleScope) mainPresenter = MainPresenter(this, this, lifecycleScope)
mainPresenter.initScannerLauncher(this) mainPresenter.initScannerLauncher(this)
showStoragePermission(launcher, allowAction = {
// mainPresenter.initAllDocumentData()
Log.d("glc","我被调用了B")
})
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (checkStorePermission() && needRefresh) { if (checkStorePermission() && needRefresh) {
mainPresenter.initAllDocumentData() mainPresenter.initAllDocumentData()
Log.d("glc","我被调用了A")
} else { } else {
showStoragePermission(launcher, allowAction = {
mainPresenter.initAllDocumentData()
})
} }
} }
...@@ -164,6 +167,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -164,6 +167,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
show(toolFragment) show(toolFragment)
commit() commit()
} }
currentFragment.userVisibleHint = true
currentFragment = toolFragment currentFragment = toolFragment
isToolAdd = true isToolAdd = true
} }
...@@ -239,7 +243,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView { ...@@ -239,7 +243,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
val newFile = File(mainPresenter.getDocumentAppDir(), "$it.pdf") val newFile = File(mainPresenter.getDocumentAppDir(), "$it.pdf")
mainPresenter.copyFile(file, newFile) mainPresenter.copyFile(file, newFile)
this.updateMediaStore() this.updateMediaStore()
refreshPageList() // refreshPageList()
} }
} }
......
...@@ -5,6 +5,7 @@ import android.content.Context ...@@ -5,6 +5,7 @@ import android.content.Context
import android.content.IntentSender import android.content.IntentSender
import android.net.Uri import android.net.Uri
import android.os.Environment import android.os.Environment
import android.util.Log
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.IntentSenderRequest import androidx.activity.result.IntentSenderRequest
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
...@@ -57,12 +58,7 @@ class MainPresenter( ...@@ -57,12 +58,7 @@ class MainPresenter(
private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest> private lateinit var scannerLauncher: ActivityResultLauncher<IntentSenderRequest>
fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) { fun initAllDocumentData() = lifecycleScope.launch(Dispatchers.IO) {
pdfDocuments.clear() Log.d("glc","pdfs 清理前:"+pdfDocuments.size)
wordDocuments.clear()
excelDocuments.clear()
pptDocuments.clear()
context.upDateDemoStore() context.upDateDemoStore()
if (!ConstObject.haveSaveDemo) { if (!ConstObject.haveSaveDemo) {
context.saveAssetsFile() context.saveAssetsFile()
...@@ -70,22 +66,15 @@ class MainPresenter( ...@@ -70,22 +66,15 @@ class MainPresenter(
} }
val pdfs = initAllPdfData() val pdfs = initAllPdfData()
pdfs.map { it.state = PdfBoxUtils.checkPdfEncryption(it.path) } 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) pdfDocuments.addAll(pdfs)
lifecycleScope.launch(Dispatchers.Main) { Log.d("glc","添加了 pdfDocuments:"+pdfDocuments.size)
mainView.refreshPageList()
}
wordDocuments.addAll(initAllWordData()) wordDocuments.addAll(initAllWordData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
excelDocuments.addAll(initAllExcelData()) excelDocuments.addAll(initAllExcelData())
lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList()
}
pptDocuments.addAll(initAllPptData()) pptDocuments.addAll(initAllPptData())
lifecycleScope.launch(Dispatchers.Main) { lifecycleScope.launch(Dispatchers.Main) {
mainView.refreshPageList() mainView.refreshPageList()
...@@ -96,7 +85,7 @@ class MainPresenter( ...@@ -96,7 +85,7 @@ class MainPresenter(
fun getDataByType(documentType: String, dataType: String): List<DocumentBean> { fun getDataByType(documentType: String, dataType: String): List<DocumentBean> {
val bookmarkList = SpStringUtils.getSpStringList(SpStringUtils.BOOKMARK_KEY) val bookmarkList = SpStringUtils.getSpStringList(SpStringUtils.BOOKMARK_KEY)
Log.d("glc","pdfDocuments:"+pdfDocuments.size)
when (documentType) { when (documentType) {
TYPE_PDF -> { TYPE_PDF -> {
pdfDocuments.forEach { pdfDocuments.forEach {
......
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