Skip to content

Commit faacc09

Browse files
committed
Add second activity to demo app
* Test and fix OneSignal onStart lifecycle event, not call it when navigating between activities
1 parent ecbe38b commit faacc09

File tree

8 files changed

+84
-2
lines changed

8 files changed

+84
-2
lines changed

Examples/OneSignalDemo/app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@
8484

8585
<activity android:name=".activity.MainActivity"/>
8686

87+
<activity
88+
android:name=".activity.SecondaryActivity"
89+
android:exported="false" />
8790
</application>
8891

8992
</manifest>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.onesignal.sdktest.activity;
2+
3+
import androidx.appcompat.app.AppCompatActivity;
4+
5+
import android.os.Bundle;
6+
7+
import com.onesignal.sdktest.R;
8+
9+
public class SecondaryActivity extends AppCompatActivity {
10+
11+
@Override
12+
protected void onCreate(Bundle savedInstanceState) {
13+
super.onCreate(savedInstanceState);
14+
setContentView(R.layout.activity_secondary);
15+
}
16+
}

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import androidx.recyclerview.widget.LinearLayoutManager;
1010
import androidx.recyclerview.widget.RecyclerView;
1111
import androidx.appcompat.widget.Toolbar;
12+
13+
import android.content.Intent;
1214
import android.util.Pair;
1315
import android.view.View;
1416
import android.view.ViewTreeObserver;
@@ -25,6 +27,7 @@
2527
import com.onesignal.OSSubscriptionStateChanges;
2628
import com.onesignal.OneSignal;
2729
import com.onesignal.sdktest.R;
30+
import com.onesignal.sdktest.activity.SecondaryActivity;
2831
import com.onesignal.sdktest.adapter.InAppMessageRecyclerViewAdapter;
2932
import com.onesignal.sdktest.adapter.NotificationRecyclerViewAdapter;
3033
import com.onesignal.sdktest.adapter.PairRecyclerViewAdapter;
@@ -244,6 +247,10 @@ public ActivityViewModel onActivityCreated(Context context) {
244247
pauseInAppMessagesSwitch = getActivity().findViewById(R.id.main_activity_settings_pause_in_app_messages_switch);
245248
revokeConsentButton = getActivity().findViewById(R.id.main_activity_settings_revoke_consent_button);
246249

250+
Button navigateNextActivity = getActivity().findViewById(R.id.main_activity_navigate_button);
251+
navigateNextActivity.setOnClickListener(v -> {
252+
getActivity().startActivity(new Intent(getActivity(), SecondaryActivity.class));
253+
});
247254
tagSet = new HashMap<>();
248255
tagArrayList = new ArrayList<>();
249256

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
tools:context=".activity.SecondaryActivity">
7+
8+
</LinearLayout>

Examples/OneSignalDemo/app/src/main/res/layout/main_activity_layout.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,29 @@
10761076

10771077
</LinearLayout>
10781078

1079+
<LinearLayout
1080+
android:layout_width="match_parent"
1081+
android:layout_height="56dp"
1082+
android:layout_gravity="center"
1083+
android:layout_marginStart="16dp"
1084+
android:layout_marginTop="4dp"
1085+
android:layout_marginEnd="16dp"
1086+
android:layout_marginBottom="16dp"
1087+
android:background="@color/colorPrimary"
1088+
android:gravity="center"
1089+
android:orientation="vertical">
1090+
1091+
<Button
1092+
android:id="@+id/main_activity_navigate_button"
1093+
android:layout_width="match_parent"
1094+
android:layout_height="match_parent"
1095+
android:text="@string/navigate_next_activity"
1096+
android:textSize="19sp"
1097+
android:textColor="@android:color/white"
1098+
android:background="@drawable/ripple_selector_white_red"
1099+
android:visibility="visible"/>
1100+
1101+
</LinearLayout>
10791102
</LinearLayout>
10801103

10811104
</androidx.core.widget.NestedScrollView>

Examples/OneSignalDemo/app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
<string name="allow">Allow</string>
5353
<string name="revoke_consent">Revoke Consent</string>
5454

55+
<string name="navigate_next_activity">Next activity</string>
56+
5557
<string name="onesignal_app_id">0ba9731b-33bd-43f4-8b59-61172e27447d</string>
5658

5759
</resources>

OneSignalSDK/onesignal/src/main/java/com/onesignal/ActivityLifecycleHandler.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ void onActivityPaused(Activity activity) {
107107

108108
void onActivityStopped(Activity activity) {
109109
OneSignal.Log(OneSignal.LOG_LEVEL.DEBUG, "onActivityStopped: " + activity);
110-
focusHandler.startOnStopFocusWork();
111110

112111
if (activity == curActivity) {
113112
curActivity = null;
@@ -119,6 +118,9 @@ void onActivityStopped(Activity activity) {
119118
}
120119

121120
logCurActivity();
121+
122+
if (curActivity == null)
123+
focusHandler.startOnStopFocusWork();
122124
}
123125

124126
void onActivityDestroyed(Activity activity) {

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSFocusHandler.kt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,34 @@ class OSFocusHandler {
4242

4343
fun startOnFocusWork() {
4444
resetBackgroundState()
45+
OneSignal.onesignalLog(
46+
OneSignal.LOG_LEVEL.DEBUG,
47+
"OSFocusHandler running onAppFocus"
48+
)
4549
OneSignal.onAppFocus()
4650
}
4751

4852
fun startOnStartFocusWork() {
4953
if (stopped) {
5054
stopped = false
51-
OSTimeoutHandler.getTimeoutHandler().destroyTimeout(stopRunnable)
5255
stopRunnable = null
56+
OneSignal.onesignalLog(
57+
OneSignal.LOG_LEVEL.DEBUG,
58+
"OSFocusHandler running onAppStartFocusLogic"
59+
)
5360
OneSignal.onAppStartFocusLogic()
61+
} else {
62+
resetStopState()
5463
}
5564
}
5665

5766
fun startOnStopFocusWork() {
5867
stopRunnable = Runnable {
5968
stopped = true
69+
OneSignal.onesignalLog(
70+
OneSignal.LOG_LEVEL.DEBUG,
71+
"OSFocusHandler setting stop state: true"
72+
)
6073
}.also {
6174
OSTimeoutHandler.getTimeoutHandler().startTimeout(stopDelay, it)
6275
}
@@ -81,7 +94,15 @@ class OSFocusHandler {
8194
WorkManager.getInstance(context).cancelAllWorkByTag(tag)
8295
}
8396

97+
private fun resetStopState() {
98+
stopped = false
99+
stopRunnable?.let {
100+
OSTimeoutHandler.getTimeoutHandler().destroyTimeout(it)
101+
}
102+
}
103+
84104
private fun resetBackgroundState() {
105+
resetStopState()
85106
backgrounded = false
86107
}
87108

0 commit comments

Comments
 (0)