From 53a549013f965d96e1aa528102aa6f8791b94e2f Mon Sep 17 00:00:00 2001 From: luyao Date: Mon, 9 Dec 2019 13:58:45 +0800 Subject: [PATCH] =?UTF-8?q?startActivity=20=E6=8F=90=E4=BE=9B=E5=8F=AF?= =?UTF-8?q?=E5=8F=98=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../luyao/util/ktx/ui/ActivityExtActivity.kt | 12 +- ktx/src/main/java/luyao/util/ktx/Ktx.kt | 2 +- .../luyao/util/ktx/base/BaseVMActivity.kt | 3 +- .../luyao/util/ktx/base/BaseVMFragment.kt | 8 +- .../java/luyao/util/ktx/ext/ActivityExt.kt | 131 +++++++----------- 5 files changed, 62 insertions(+), 94 deletions(-) diff --git a/app/src/main/java/luyao/util/ktx/ui/ActivityExtActivity.kt b/app/src/main/java/luyao/util/ktx/ui/ActivityExtActivity.kt index e85b6ce..6c8588f 100644 --- a/app/src/main/java/luyao/util/ktx/ui/ActivityExtActivity.kt +++ b/app/src/main/java/luyao/util/ktx/ui/ActivityExtActivity.kt @@ -28,7 +28,7 @@ class ActivityExtActivity : BaseActivity() { } startActivityWithFlag.setOnClickListener { - startKtxActivity(Intent.FLAG_ACTIVITY_NEW_TASK) + startKtxActivity(flag = Intent.FLAG_ACTIVITY_NEW_TASK) } startActivityForResult.setOnClickListener { @@ -36,16 +36,14 @@ class ActivityExtActivity : BaseActivity() { } startActivityWithValue.setOnClickListener { - startKtxActivity(value = "string" to "single value") + startKtxActivity("string" to "single value") } startActivityWithMultiValue.setOnClickListener { startKtxActivity( - values = arrayListOf( - "int" to 1, - "boolean" to true, - "string" to "multi value" - ) + "int" to 1, + "boolean" to true, + "string" to "multi value" ) } diff --git a/ktx/src/main/java/luyao/util/ktx/Ktx.kt b/ktx/src/main/java/luyao/util/ktx/Ktx.kt index 782a862..ca33b21 100644 --- a/ktx/src/main/java/luyao/util/ktx/Ktx.kt +++ b/ktx/src/main/java/luyao/util/ktx/Ktx.kt @@ -18,7 +18,7 @@ class Ktx : ContentProvider() { companion object { lateinit var app: Application var watchActivityLife = true - var watchAppLife = true + var watchAppLife = false } diff --git a/ktx/src/main/java/luyao/util/ktx/base/BaseVMActivity.kt b/ktx/src/main/java/luyao/util/ktx/base/BaseVMActivity.kt index 8b5de58..25ec748 100644 --- a/ktx/src/main/java/luyao/util/ktx/base/BaseVMActivity.kt +++ b/ktx/src/main/java/luyao/util/ktx/base/BaseVMActivity.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.ViewModelProviders * Created by luyao * on 2019/5/31 16:16 */ -abstract class BaseVMActivity : AppCompatActivity(), LifecycleObserver { +abstract class BaseVMActivity : AppCompatActivity(){ lateinit var mViewModel: VM @@ -31,7 +31,6 @@ abstract class BaseVMActivity : AppCompatActivity(), Lifecyc private fun initVM() { providerVMClass()?.let { mViewModel = ViewModelProvider(this).get(it) - mViewModel.let(lifecycle::addObserver) } } diff --git a/ktx/src/main/java/luyao/util/ktx/base/BaseVMFragment.kt b/ktx/src/main/java/luyao/util/ktx/base/BaseVMFragment.kt index 1011ed6..1bdb805 100644 --- a/ktx/src/main/java/luyao/util/ktx/base/BaseVMFragment.kt +++ b/ktx/src/main/java/luyao/util/ktx/base/BaseVMFragment.kt @@ -5,6 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders /** @@ -41,15 +42,10 @@ abstract class BaseVMFragment : androidx.fragment.app.Fragme private fun initVM() { providerVMClass()?.let { - mViewModel = ViewModelProviders.of(this).get(it) - lifecycle.addObserver(mViewModel) + mViewModel = ViewModelProvider(this).get(it) } } open fun providerVMClass(): Class? = null - override fun onDestroy() { - lifecycle.removeObserver(mViewModel) - super.onDestroy() - } } \ No newline at end of file diff --git a/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt b/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt index 0d9a008..8464c64 100644 --- a/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt +++ b/ktx/src/main/java/luyao/util/ktx/ext/ActivityExt.kt @@ -17,113 +17,88 @@ import java.io.Serializable * on 2019/7/9 14:17 */ - inline fun Activity.startKtxActivity( - flags: Int? = null, - extra: Bundle? = null, - value: Pair? = null, - values: Collection?>? = null -) { + vararg values: Pair, + flag: Int? = null, + extra: Bundle? = null +) = + startActivity(getIntent(flag, extra, *values)) - val list = ArrayList?>() - value?.let { list.add(it) } - values?.let { list.addAll(it) } - startActivity(getIntent(flags, extra, list)) -} inline fun Fragment.startKtxActivity( - flags: Int? = null, + flag: Int? = null, extra: Bundle? = null, - value: Pair? = null, - values: Collection?>? = null + vararg values: Pair ) = activity?.let { - val list = ArrayList?>() - value?.let { v -> list.add(v) } - values?.let { v -> list.addAll(v) } - startActivity(it.getIntent(flags, extra, list)) + startActivity(it.getIntent(flag, extra, *values)) } inline fun Context.startKtxActivity( - flags: Int? = null, + flag: Int? = null, extra: Bundle? = null, - value: Pair? = null, - values: Collection?>? = null -) { - val list = ArrayList?>() - value?.let { v -> list.add(v) } - values?.let { v -> list.addAll(v) } - startActivity(getIntent(flags, extra, list)) -} + vararg values: Pair +) = + startActivity(getIntent(flag, extra, *values)) + inline fun Activity.startKtxActivityForResult( requestCode: Int, - flags: Int? = null, + flag: Int? = null, extra: Bundle? = null, - value: Pair? = null, - values: Collection?>? = null -) { - val list = ArrayList?>() - value?.let { list.add(it) } - values?.let { list.addAll(it) } - startActivityForResult(getIntent(flags, extra, list), requestCode) -} + vararg values: Pair +) = + startActivityForResult(getIntent(flag, extra, *values), requestCode) + inline fun Fragment.startKtxActivityForResult( requestCode: Int, - flags: Int? = null, + flag: Int? = null, extra: Bundle? = null, - value: Pair? = null, - values: Collection?>? = null + vararg values: Pair ) = activity?.let { - val list = ArrayList?>() - value?.let { list.add(it) } - values?.let { list.addAll(it) } - startActivityForResult(activity?.getIntent(flags, extra, list), requestCode) + startActivityForResult(activity?.getIntent(flag, extra, *values), requestCode) } inline fun Context.getIntent( - flags: Int? = null, + flag: Int? = null, extra: Bundle? = null, - pairs: List?>? = null + vararg pairs: Pair ): Intent = Intent(this, T::class.java).apply { - flags?.let { setFlags(flags) } + flag?.let { setFlags(flags) } extra?.let { putExtras(extra) } - pairs?.let { - for (pair in pairs) - pair?.let { - val name = pair.first - when (val value = pair.second) { - is Int -> putExtra(name, value) - is Byte -> putExtra(name, value) - is Char -> putExtra(name, value) - is Short -> putExtra(name, value) - is Boolean -> putExtra(name, value) - is Long -> putExtra(name, value) - is Float -> putExtra(name, value) - is Double -> putExtra(name, value) - is String -> putExtra(name, value) - is CharSequence -> putExtra(name, value) - is Parcelable -> putExtra(name, value) - is Array<*> -> putExtra(name, value) - is ArrayList<*> -> putExtra(name, value) - is Serializable -> putExtra(name, value) - is BooleanArray -> putExtra(name, value) - is ByteArray -> putExtra(name, value) - is ShortArray -> putExtra(name, value) - is CharArray -> putExtra(name, value) - is IntArray -> putExtra(name, value) - is LongArray -> putExtra(name, value) - is FloatArray -> putExtra(name, value) - is DoubleArray -> putExtra(name, value) - is Bundle -> putExtra(name, value) - is Intent -> putExtra(name, value) - else -> { - } - } + pairs.forEach { pair -> + val name = pair.first + when (val value = pair.second) { + is Int -> putExtra(name, value) + is Byte -> putExtra(name, value) + is Char -> putExtra(name, value) + is Short -> putExtra(name, value) + is Boolean -> putExtra(name, value) + is Long -> putExtra(name, value) + is Float -> putExtra(name, value) + is Double -> putExtra(name, value) + is String -> putExtra(name, value) + is CharSequence -> putExtra(name, value) + is Parcelable -> putExtra(name, value) + is Array<*> -> putExtra(name, value) + is ArrayList<*> -> putExtra(name, value) + is Serializable -> putExtra(name, value) + is BooleanArray -> putExtra(name, value) + is ByteArray -> putExtra(name, value) + is ShortArray -> putExtra(name, value) + is CharArray -> putExtra(name, value) + is IntArray -> putExtra(name, value) + is LongArray -> putExtra(name, value) + is FloatArray -> putExtra(name, value) + is DoubleArray -> putExtra(name, value) + is Bundle -> putExtra(name, value) + is Intent -> putExtra(name, value) + else -> { } + } } }