From 89e35a1933ba40513a96572b27291c0aa65c918c Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 11 Oct 2025 10:21:42 +0000
Subject: [PATCH] 框架优化

---
 libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt |   47 ++++++---------
 libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt          |   48 ++++++++++++++++
 libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt        |   35 +++++++++++
 3 files changed, 101 insertions(+), 29 deletions(-)

diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt b/libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt
index 066c538..5e1dfb0 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt
+++ b/libmvi/src/main/java/com/runt/open/mvi/base/BaseActivity.kt
@@ -40,6 +40,7 @@
 import com.runt.open.mvi.R
 import com.runt.open.mvi.base.model.BaseViewModel
 import com.runt.open.mvi.base.model.ViewModelFactory
+import com.runt.open.mvi.utils.FileUtils
 import com.runt.open.mvi.utils.PreferencesUtils
 import java.io.File
 import java.lang.reflect.ParameterizedType
@@ -101,6 +102,36 @@
         initViews() //初始化UI
         mViewModel!!.onCreate(this  as BaseActivity<LayoutView<BaseViewModel> , BaseViewModel>)
         loadData() //加载数据
+    }
+
+    override fun onPause() {
+        super.onPause()
+        mViewModel!!.onPause()
+        Log.i(TAG , "onPause: ")
+    }
+
+    override fun onResume() {
+        super.onResume()
+        mViewModel!!.onResume()
+        Log.i(TAG , "onResume: ")
+    }
+
+    override fun onStart() {
+        super.onStart()
+        mViewModel!!.onStart()
+        Log.i(TAG , "onStart: ")
+    }
+
+    override fun onStop() {
+        super.onStop()
+        mViewModel!!.onStop()
+        Log.i(TAG , "onStop: ")
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        mViewModel!!.onDestroy()
+        Log.i(TAG , "onDestroy: ")
     }
 
     abstract fun init()
@@ -178,7 +209,7 @@
 
         val cR : ContentResolver = getContentResolver()
         val mime = MimeTypeMap.getSingleton()
-        var filePath = mViewModel!!.getFilePathFromUri(fileUriList.get(0)!!);
+        var filePath = FileUtils.getFilePathFromUri(fileUriList.get(0)!!);
         //文件不存在或读写权限受限
         if(filePath == null){
             //android 11需要申请权限 //是否有所有问读写权限
@@ -194,7 +225,7 @@
         }else{
             var filePathes = ArrayList<String>()
             for (i in 0 until fileUriList.size) {
-                var filePath = mViewModel!!.getFilePathFromUri(fileUriList.get(i)!!);
+                var filePath = FileUtils.getFilePathFromUri(fileUriList.get(i)!!);
                 filePathes.add(filePath!!)
             }
             requestFileResult?.onChanged(filePathes)
diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
index f8a1e09..7c8909b 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
+++ b/libmvi/src/main/java/com/runt/open/mvi/base/model/BaseViewModel.kt
@@ -60,6 +60,26 @@
         TAG = javaClass.simpleName;
     }
 
+    open fun onPause(){
+
+    }
+
+    open fun onResume(){
+
+    }
+
+    open fun onStart(){
+
+    }
+
+    open fun onStop(){
+
+    }
+
+    open fun onDestroy(){
+
+    }
+
     fun getActivity(): BaseActivity<LayoutView<BaseViewModel> , BaseViewModel> {
         return mActivity!!;
     }
@@ -260,32 +280,5 @@
         val json = if (obj is String) obj else Gson().toJson(obj)
         val requestBody = json.toString().toRequestBody(mediaType)
         return requestBody;
-    }
-
-    fun getFilePathFromUri(uri:Uri):String?{
-        var filePath = "";
-        var filePathColumn = arrayOf(MediaStore.Video.Media.DATA)
-        var cursor = mActivity!!.contentResolver.query(uri!!,filePathColumn,null,null,null)
-        cursor?.let {
-            it.moveToFirst()
-            var index = it.getColumnIndex(filePathColumn[0])
-            if(index > -1 && index < it.columnCount){
-                filePath = it.getString(index)
-            }
-            it.close();
-        }
-        var file = File(filePath);
-        Log.i(TAG,"文件是否存在=${file.exists()} file=${filePath} ")
-        if(file.exists()){
-            try {
-                var inputStream = FileInputStream(file)
-                inputStream.close();
-                return filePath;
-            }catch (e:Exception){
-                return null;
-            }
-        }else{
-            return null;
-        }
     }
 }
\ No newline at end of file
diff --git a/libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt b/libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt
new file mode 100644
index 0000000..6922298
--- /dev/null
+++ b/libmvi/src/main/java/com/runt/open/mvi/utils/FileUtils.kt
@@ -0,0 +1,48 @@
+package com.runt.open.mvi.utils
+
+import android.net.Uri
+import android.provider.MediaStore
+import android.util.Log
+import com.runt.open.mvi.OpenApplication
+import java.io.File
+import java.io.FileInputStream
+
+/**
+ * @author Runt(qingingrunt2010@qq.com)
+ * @purpose
+ * @date 10/7/25
+ */
+class FileUtils {
+
+    companion object{
+        val TAG = "FileUtils";
+
+        fun getFilePathFromUri(uri: Uri):String?{
+            var filePath = "";
+            var filePathColumn = arrayOf(MediaStore.Video.Media.DATA)
+            var cursor = OpenApplication.getApplication()!!.contentResolver.query(uri!!,filePathColumn,null,null,null)
+            cursor?.let {
+                it.moveToFirst()
+                var index = it.getColumnIndex(filePathColumn[0])
+                if(index > -1 && index < it.columnCount){
+                    filePath = it.getString(index)
+                }
+                it.close();
+            }
+            var file = File(filePath);
+            Log.i(TAG,"文件是否存在=${file.exists()} file=${filePath} ")
+            if(file.exists()){
+                try {
+                    var inputStream = FileInputStream(file)
+                    inputStream.close();
+                    return filePath;
+                }catch (e:Exception){
+                    return null;
+                }
+            }else{
+                return null;
+            }
+        }
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.1