From cd771fa4b5d2762478099afdb445578de0fbe2df Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Fri, 14 Mar 2025 05:51:17 +0000
Subject: [PATCH] 代码补充

---
 libmvi/src/main/java/com/runt/open/mvi/base/model/ImpViewModel.kt     |    8 ++++++++
 libmvi/src/main/java/com/runt/open/mvi/base/model/ViewModelFactory.kt |   10 +++++++++-
 2 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/model/ImpViewModel.kt b/libmvi/src/main/java/com/runt/open/mvi/base/model/ImpViewModel.kt
new file mode 100644
index 0000000..9a9d1bb
--- /dev/null
+++ b/libmvi/src/main/java/com/runt/open/mvi/base/model/ImpViewModel.kt
@@ -0,0 +1,8 @@
+package com.runt.open.mvi.base.model
+
+/**
+ * @author Runt(qingingrunt2010@qq.com)
+ * @purpose
+ * @date 9/6/24
+ */
+class ImpViewModel :BaseViewModel() {}
\ No newline at end of file
diff --git a/libmvi/src/main/java/com/runt/open/mvi/base/model/ViewModelFactory.kt b/libmvi/src/main/java/com/runt/open/mvi/base/model/ViewModelFactory.kt
index a929f74..f43bccf 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/base/model/ViewModelFactory.kt
+++ b/libmvi/src/main/java/com/runt/open/mvi/base/model/ViewModelFactory.kt
@@ -1,7 +1,9 @@
 package com.runt.open.mvi.base.model
 
+import android.util.Log
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
+import java.lang.reflect.InvocationTargetException
 
 /**
  * @author Runt(qingingrunt2010 @ qq.com)
@@ -13,11 +15,17 @@
 
     override fun <T : ViewModel> create(modelClass : Class<T>) : T {
         return try {
-            modelClass.newInstance()
+            modelClass.getDeclaredConstructor().newInstance()
         } catch (e : InstantiationException) {
             throw RuntimeException("(创建实例失败,没有对应的构造方法,请重写一个实现类)Cannot create an instance of $modelClass" , e)
         } catch (e : IllegalAccessException) {
             throw RuntimeException("Cannot create an instance of $modelClass" , e)
+        }catch (e : UnsatisfiedLinkError) {
+            throw RuntimeException("Cannot create an instance of $modelClass" , e)
+        }catch (e : InvocationTargetException){
+            Log.e("ViewModelFactory" , "create: ${e.cause}" , );
+            e.cause?.printStackTrace()
+            throw RuntimeException("Cannot create an instance of $modelClass" , e)
         }
     }
 

--
Gitblit v1.9.1