Skip to content

Commit 9743f99

Browse files
kevinguitargildor
andcommitted
Apply setMaxLifecycle during fragment transaction & update dependencies (#2)
* Apply setMaxLifecycle during fragment transaction & update dependencies * Updated travis config * Deprecated few properties + adjust publishing config * Update .travis.yml * Update .travis.yml * Update .travis.yml * Update .travis.yml * Update .travis.yml * Update .travis.yml * Add an option to set max lifecycle * Fix some lint warning * Fix missing dependency in test * Address review comments * Update jacoco report path * Workaround for coveralls SSLException Co-authored-by: Andrey Mischenko <[email protected]>
1 parent 498317c commit 9743f99

18 files changed

+155
-275
lines changed

.travis.yml

Lines changed: 15 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
os: linux
12
language: android
3+
jdk: oraclejdk11
4+
25
before_cache:
36
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
47
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
@@ -7,63 +10,19 @@ cache:
710
- $HOME/.gradle/caches/
811
- $HOME/.gradle/wrapper/
912
- $HOME/.android/build-cache
10-
11-
android:
12-
components:
13-
# use the latest revision of Android SDK Tools
14-
- tools
15-
- platform-tools
16-
- tools
17-
# The BuildTools version used by your project
18-
- build-tools-27.0.3
19-
# The SDK version used to compile your project
20-
- android-27
21-
# Additional components
22-
- extra-google-m2repository
23-
- extra-android-m2repository
24-
- extra-android-support
25-
26-
licenses:
27-
- 'android-sdk-preview-license-.+'
28-
- 'android-sdk-license-.+'
29-
- 'google-gdk-license-.+'
30-
31-
jdk:
32-
- oraclejdk8
33-
13+
14+
env:
15+
global:
16+
- ANDROID_HOME=~/android-sdk
17+
18+
before_install:
19+
- wget "https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip" -O commandlinetools.zip
20+
- unzip commandlinetools.zip -d $ANDROID_HOME/
21+
- yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
22+
3423
notifications:
3524
email: false
3625

37-
install:
38-
# List and delete unnecessary components to free space
39-
- sdkmanager --list || true
40-
- sdkmanager --uninstall "system-images;android-15;default;armeabi-v7a"
41-
- sdkmanager --uninstall "system-images;android-16;default;armeabi-v7a"
42-
- sdkmanager --uninstall "system-images;android-17;default;armeabi-v7a"
43-
- sdkmanager --uninstall "system-images;android-18;default;armeabi-v7a"
44-
- sdkmanager --uninstall "system-images;android-19;default;armeabi-v7a"
45-
- sdkmanager --uninstall "system-images;android-21;default;armeabi-v7a"
46-
- sdkmanager --uninstall "extras;google;google_play_services"
47-
- sdkmanager --uninstall "extras;android;support"
48-
- sdkmanager --uninstall "platforms;android-10"
49-
- sdkmanager --uninstall "platforms;android-15"
50-
- sdkmanager --uninstall "platforms;android-16"
51-
- sdkmanager --uninstall "platforms;android-17"
52-
- sdkmanager --uninstall "platforms;android-18"
53-
- sdkmanager --uninstall "platforms;android-19"
54-
- sdkmanager --uninstall "platforms;android-20"
55-
- sdkmanager --uninstall "platforms;android-21"
56-
- sdkmanager --uninstall "platforms;android-22"
57-
- sdkmanager --uninstall "platforms;android-23"
58-
- sdkmanager --uninstall "platforms;android-24"
59-
- sdkmanager --uninstall "platforms;android-25"
60-
- sdkmanager --uninstall "platforms;android-26"
61-
- sdkmanager --uninstall "build-tools;25.0.2"
62-
# Update sdk tools to latest version and install/update components
63-
- echo yes | sdkmanager "tools"
64-
- echo yes | sdkmanager "platforms;android-27" # Latest platform required by SDK tools
65-
- echo yes | sdkmanager "extras;android;m2repository"
66-
- echo yes | sdkmanager "extras;google;m2repository"
67-
6826
script:
69-
- ./gradlew jacocoTestReportDebug coveralls
27+
- ./gradlew jacocoTestReportDebug coveralls
28+

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ While having a good architecture and caching most of the data that is presented
224224

225225
This gives the best performance keeping all fragments in the memory so we won't have to wait for the rebuilding of them. However with many tabs and deep navigation stacks this can lead easily to memory consumption issues.
226226

227-
**WARNING** - Keep in mind that using **show and hide does not trigger the usual lifecycle events** of the fragments so app developer has to manually take care of handling state which is usually done in the Fragment onPause/Stop and onResume/Start methods.
227+
**WARNING** - Keep in mind that using **show and hide does not trigger the usual lifecycle events** of the fragments so app developer has to manually take care of handling state which is usually done in the Fragment onPause/Stop and onResume/Start methods. But you can enable *setMaxLifecycleOnSwitch* to force fragments triggering usual lifecycle events, and it's done on the fragment transaction while switching tabs.
228228

229229
```java
230230
mNavController = FragNavController.newBuilder(...)

app/build.gradle

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,19 @@ android {
2121
}
2222
}
2323
}
24+
2425
repositories {
25-
jcenter()
26+
repositories {
27+
google()
28+
jcenter()
29+
mavenCentral()
30+
}
2631
}
2732

2833
dependencies {
2934
implementation project(':frag-nav')
30-
implementation "com.google.android.material:material:1.0.0"
31-
implementation "androidx.appcompat:appcompat:1.0.2"
35+
implementation "com.google.android.material:material:1.5.0"
36+
implementation "androidx.appcompat:appcompat:1.4.1"
3237
implementation "com.roughike:bottom-bar:2.3.1"
3338
testImplementation "junit:junit:$rootProject.ext.junitVersion"
3439
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
android:supportsRtl="true"
1111
android:theme="@style/AppTheme"
1212
tools:ignore="GoogleAppIndexingWarning">
13-
<activity android:name=".activities.MainActivity">
13+
<activity android:name=".activities.MainActivity"
14+
android:exported="true">
1415
<intent-filter>
1516
<action android:name="android.intent.action.MAIN"/>
1617

app/src/main/java/com/ncapdevi/sample/activities/BottomTabsActivity.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.ncapdevi.sample.activities
22

33
import android.os.Bundle
4-
import androidx.fragment.app.Fragment
5-
import androidx.appcompat.app.AppCompatActivity
64
import android.util.Log
75
import android.view.MenuItem
86
import android.view.View
7+
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.fragment.app.Fragment
99
import com.ncapdevi.fragnav.FragNavController
1010
import com.ncapdevi.fragnav.FragNavLogger
1111
import com.ncapdevi.fragnav.FragNavSwitchController
@@ -74,9 +74,9 @@ class BottomTabsActivity : AppCompatActivity(), BaseFragment.FragmentNavigation,
7474
}
7575
}
7676

77-
override fun onSaveInstanceState(outState: Bundle?) {
77+
override fun onSaveInstanceState(outState: Bundle) {
7878
super.onSaveInstanceState(outState)
79-
fragNavController.onSaveInstanceState(outState!!)
79+
fragNavController.onSaveInstanceState(outState)
8080

8181
}
8282

app/src/main/java/com/ncapdevi/sample/activities/NavDrawerActivity.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.ncapdevi.sample.activities
22

33
import android.os.Bundle
4-
import com.google.android.material.navigation.NavigationView
5-
import androidx.fragment.app.Fragment
6-
import androidx.core.view.GravityCompat
7-
import androidx.drawerlayout.widget.DrawerLayout
4+
import android.view.MenuItem
5+
import android.view.View
86
import androidx.appcompat.app.ActionBarDrawerToggle
97
import androidx.appcompat.app.AppCompatActivity
108
import androidx.appcompat.widget.Toolbar
11-
import android.view.MenuItem
12-
import android.view.View
9+
import androidx.core.view.GravityCompat
10+
import androidx.drawerlayout.widget.DrawerLayout
11+
import androidx.fragment.app.Fragment
12+
import com.google.android.material.navigation.NavigationView
1313
import com.ncapdevi.fragnav.FragNavController
1414
import com.ncapdevi.fragnav.FragNavTransactionOptions
1515
import com.ncapdevi.sample.R
@@ -71,7 +71,7 @@ class NavDrawerActivity : AppCompatActivity(), NavigationView.OnNavigationItemSe
7171
}
7272
}
7373

74-
override fun onSaveInstanceState(outState: Bundle?) {
74+
override fun onSaveInstanceState(outState: Bundle) {
7575
super.onSaveInstanceState(outState)
7676
fragNavController.onSaveInstanceState(outState)
7777
}
@@ -96,7 +96,7 @@ class NavDrawerActivity : AppCompatActivity(), NavigationView.OnNavigationItemSe
9696
return true
9797
}
9898

99-
override fun pushFragment(fragment: Fragment, sharedList: List<Pair<View, String>>?) {
99+
override fun pushFragment(fragment: Fragment, sharedElementList: List<Pair<View, String>>?) {
100100
fragNavController.pushFragment(fragment)
101101
}
102102
}

app/src/main/java/com/ncapdevi/sample/fragments/BaseFragment.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ package com.ncapdevi.sample.fragments
22

33
import android.content.Context
44
import android.os.Bundle
5-
import androidx.fragment.app.Fragment
65
import android.view.LayoutInflater
76
import android.view.View
87
import android.view.ViewGroup
98
import android.widget.Button
10-
9+
import androidx.fragment.app.Fragment
1110
import com.ncapdevi.sample.R
1211

1312
/**
@@ -34,7 +33,7 @@ open class BaseFragment : Fragment() {
3433
}
3534
}
3635

37-
override fun onAttach(context: Context?) {
36+
override fun onAttach(context: Context) {
3837
super.onAttach(context)
3938
if (context is FragmentNavigation) {
4039
mFragmentNavigation = context

build.gradle

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,39 @@
11
buildscript {
2-
ext.kotlin_version = '1.3.31'
3-
ext.spek_version = '2.0.0-rc.1'
2+
ext.kotlin_version = '1.6.10'
3+
ext.spek_version = '2.0.18'
44
repositories {
5-
jcenter()
65
google()
7-
6+
mavenCentral()
87
}
98
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.4.1'
9+
classpath 'com.android.tools.build:gradle:7.1.2'
1110
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
12-
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.3.1.1"
13-
classpath "com.vanniktech:gradle-android-junit-jacoco-plugin:0.13.0"
11+
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.8.2.0"
12+
classpath "org.jacoco:org.jacoco.core:0.8.7"
1413
}
1514
}
1615

1716
allprojects {
1817
repositories {
1918
google()
20-
jcenter()
2119
mavenCentral()
22-
maven { url "http://dl.bintray.com/jetbrains/spek" }
2320
}
2421
}
22+
2523
repositories {
2624
google()
27-
jcenter()
2825
mavenCentral()
2926
}
27+
3028
task clean(type: Delete) {
3129
delete rootProject.buildDir
3230
}
3331

3432
ext {
3533
// App dependencies
36-
37-
junitVersion = '4.12'
38-
buildToolsVersion = '28.0.3'
34+
junitVersion = '4.13.2'
35+
buildToolsVersion = '30.0.3'
3936
minSdkVersion = 14
40-
targetSdkVersion = 28
41-
compileSdkVersion = 28
37+
targetSdkVersion = 31
38+
compileSdkVersion = 31
4239
}

0 commit comments

Comments
 (0)