Skip to content

Commit

Permalink
### 1.4.2
Browse files Browse the repository at this point in the history
- 调整生命周期赋值方式
- 优化内存泄露问题
  • Loading branch information
SOUSHIN\Soushin committed Aug 27, 2022
1 parent 7de9d90 commit dc9edf6
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 78 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,15 @@ Android Studio4.0以下使用TinMvvmTemplate这个文件里放着TinMvv的一键

### 历史升级记录

### 1.4.2
- 调整生命周期赋值方式
- 优化内存泄露问题


### 1.4.1
- 升级项目依赖库
- 调整sharedViewModel共享ViewModel默认为false,可在GlobalConfiguration全局配置


### 1.4.0

- 取消协程在BaseViewModel里的置空问题,使用getScope()方法解决viewModelScope和lifecycle?.lifecycleScope可能被取消的问题
Expand Down
16 changes: 9 additions & 7 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: "androidx.navigation.safeargs"
plugins{
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'androidx.navigation.safeargs'
}

android {
compileSdkVersion rootProject.compileSdkVersion
compileSdk rootProject.compileSdkVersion
defaultConfig {
applicationId "com.soushin.tinmvvm"
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
minSdk rootProject.minSdkVersion
targetSdk rootProject.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
multiDexEnabled true
Expand Down
79 changes: 23 additions & 56 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,56 +1,23 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle"
buildscript {
ext.kotlin_version = '1.6.21'
ext.navVersion= '2.4.1'

repositories {
mavenCentral()
maven { url "https://www.jitpack.io" }
//阿里云仓库总览 https://developer.aliyun.com/mvn/guide
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
dependencies {
//viewbinding对gradle版本有要求 最低3.6 低于此版本会导致部分功能不可用
classpath 'com.android.tools.build:gradle:7.2.1'
// classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion"
}
}

allprojects {
repositories {
maven { url "https://www.jitpack.io" }
google()
mavenCentral()
//阿里云仓库总览 https://developer.aliyun.com/mvn/guide
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}






// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
//viewbinding对gradle版本有要求 最低3.6 低于此版本会导致部分功能不可用
classpath 'com.android.tools.build:gradle:4.2.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.4.1"
}
}
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}

apply {
from 'config.gradle'
}

task clean(type: Delete) {
delete rootProject.buildDir
}
7 changes: 4 additions & 3 deletions config.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ ext {
versionCode = 1_00_00
versionName = '1.0.0'

tinmvvmVersionCode = 1_04_01
tinmvvmVersionName = '1.4.1'
tinmvvmVersionCode = 1_04_02
tinmvvmVersionName = '1.4.2'

// rxjavaName = 'rxjava2'
rxjavaName = 'rxjava3'
Expand All @@ -21,7 +21,8 @@ ext {
immersionbarVersion = '3.0.0'
lifecycleVersion = '2.3.1'
pagingVersion = '3.0.0'
navVersion = '2.3.5'
navVersion = '2.4.1'
kotlin_version = '1.6.21'

deps = [
appcompat : "androidx.appcompat:appcompat:$appcompatVersion",
Expand Down
39 changes: 38 additions & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1 +1,38 @@
include ':app', ':tinmvvm'

pluginManagement {
repositories {
gradlePluginPortal()
maven { url "https://www.jitpack.io" }
google()
mavenCentral()
//阿里云仓库总览 https://developer.aliyun.com/mvn/guide
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url "https://www.jitpack.io" }
google()
mavenCentral()
//阿里云仓库总览 https://developer.aliyun.com/mvn/guide
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/spring' }
maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
maven { url 'https://maven.aliyun.com/repository/grails-core' }
maven { url 'https://maven.aliyun.com/repository/apache-snapshots' }
}
}

rootProject.name = "TinMvvm"
include ':app',':tinmvvm'
14 changes: 8 additions & 6 deletions tinmvvm/build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
//jitpack编译使用
//apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'maven-publish'
plugins{
id 'com.android.library'
id 'kotlin-android'
id 'kotlin-kapt'
//jitpack编译使用
//id 'com.github.dcendents.android-maven'
id 'maven-publish'
}
group = 'com.github.932707629'

afterEvaluate {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.databinding.DataBindingComponent
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.cancel
import me.soushin.tinmvvm.config.AppComponent
Expand Down Expand Up @@ -54,7 +55,7 @@ abstract class DataBindingActivity<VD : ViewDataBinding,
}else {
DataBindingUtil.setContentView(activity, it)
}
mViewData!!.lifecycleOwner = this@DataBindingActivity
mViewData!!.lifecycleOwner = mViewData!!.root.findViewTreeLifecycleOwner()
bindingParams.forEach {entry->
mViewData!!.setVariable(entry.key,entry.value)
}
Expand All @@ -69,7 +70,7 @@ abstract class DataBindingActivity<VD : ViewDataBinding,
mViewData?.setVariable(vid,mViewModel)
}
//为防止直接在DataBindingActivity.initView()调用时出现为空的情况
mViewModel?.lifecycle = this@DataBindingActivity
mViewModel?.lifecycle = mViewData?.lifecycleOwner
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.cancel
import me.soushin.tinmvvm.config.AppComponent
Expand Down Expand Up @@ -67,7 +68,7 @@ import me.soushin.tinmvvm.config.DataBindingConfig
}else {
DataBindingUtil.inflate<VD>(inflater,it,container,false)
}
vd!!.lifecycleOwner = this@DataBindingFragment
vd!!.lifecycleOwner = vd!!.root.findViewTreeLifecycleOwner()
bindingParams.forEach {entry->
vd!!.setVariable(entry.key,entry.value)
}
Expand All @@ -83,7 +84,7 @@ import me.soushin.tinmvvm.config.DataBindingConfig
vd?.setVariable(vid,mViewModel)
}
//为防止直接在DataBindingFragment.initView()调用时出现为空的情况
mViewModel?.lifecycle = this@DataBindingFragment
mViewModel?.lifecycle = vd?.lifecycleOwner
}
}
return vd
Expand Down

0 comments on commit dc9edf6

Please sign in to comment.