aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-06-10 02:48:16 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-06-10 02:48:16 +0000
commit076607a7ca5f23f7a87d032a9b1e80beb218fb27 (patch)
tree71377f55702ffa215bd7e851ba979c69a4089ff2
parentc124828352a3cd67eeb87733f99988722b636cfa (diff)
downloadinfinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar.gz
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar.bz2
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar.lz
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar.xz
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.tar.zst
infinity-for-reddit-076607a7ca5f23f7a87d032a9b1e80beb218fb27.zip
Fixed lazy mode could not be paused properly.
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java8
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java62
2 files changed, 32 insertions, 38 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
index d0ff1e4e..61a4eef7 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
@@ -2,8 +2,8 @@ package ml.docilealligator.infinityforreddit;
interface FragmentCommunicator {
void refresh();
- default void startLazyMode() {};
- default void stopLazyMode() {};
- default void resumeLazyMode(boolean resumeNow) {};
- default void pauseLazyMode() {};
+ default void startLazyMode() {}
+ default void stopLazyMode() {}
+ default void resumeLazyMode(boolean resumeNow) {}
+ default void pauseLazyMode(boolean startTimer) {}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
index cf26927c..d14944c1 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
@@ -8,7 +8,6 @@ import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
@@ -59,8 +58,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
private Activity activity;
private LinearLayoutManager mLinearLayoutManager;
- private String mName;
- private int mPostType;
private boolean isInLazyMode = false;
private boolean isLazyModePaused = false;
@@ -154,31 +151,28 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
mLinearLayoutManager = new LinearLayoutManager(activity);
mPostRecyclerView.setLayoutManager(mLinearLayoutManager);
- mPostRecyclerView.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- if(isInLazyMode) {
- pauseLazyMode();
- }
- return false;
+ mPostRecyclerView.setOnTouchListener((view, motionEvent) -> {
+ if(isInLazyMode) {
+ pauseLazyMode(true);
}
+ return false;
});
- mPostType = getArguments().getInt(POST_TYPE_KEY);
+ int postType = getArguments().getInt(POST_TYPE_KEY);
String accessToken = activity.getSharedPreferences(SharedPreferencesUtils.AUTH_CODE_FILE_KEY, Context.MODE_PRIVATE)
.getString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, "");
PostViewModel.Factory factory;
- if(mPostType != PostDataSource.TYPE_FRONT_PAGE) {
- mName = getArguments().getString(NAME_KEY);
+ if(postType != PostDataSource.TYPE_FRONT_PAGE) {
+ String name = getArguments().getString(NAME_KEY);
mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit,
- mSharedPreferences, mPostType, () -> mPostViewModel.retryLoadingMore());
+ mSharedPreferences, postType, () -> mPostViewModel.retryLoadingMore());
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
- getResources().getConfiguration().locale, mName, mPostType, new PostDataSource.OnPostFetchedCallback() {
+ getResources().getConfiguration().locale, name, postType, new PostDataSource.OnPostFetchedCallback() {
@Override
public void hasPost() {
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
@@ -194,10 +188,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
});
} else {
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit,
- mSharedPreferences, mPostType, () -> mPostViewModel.retryLoadingMore());
+ mSharedPreferences, postType, () -> mPostViewModel.retryLoadingMore());
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
- getResources().getConfiguration().locale, mPostType, new PostDataSource.OnPostFetchedCallback() {
+ getResources().getConfiguration().locale, postType, new PostDataSource.OnPostFetchedCallback() {
@Override
public void hasPost() {
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
@@ -284,27 +278,28 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
@Override
public void resumeLazyMode(boolean resumeNow) {
- isInLazyMode = true;
- isLazyModePaused = false;
- window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- if(resumeNow) {
- lazyModeHandler.post(lazyModeRunnable);
- } else {
- lazyModeHandler.postDelayed(lazyModeRunnable, 2500);
+ if(isInLazyMode) {
+ isLazyModePaused = false;
+ window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ if(resumeNow) {
+ lazyModeHandler.post(lazyModeRunnable);
+ } else {
+ lazyModeHandler.postDelayed(lazyModeRunnable, 2500);
+ }
}
}
@Override
- public void pauseLazyMode() {
+ public void pauseLazyMode(boolean startTimer) {
+ resumeLazyModeCountDownTimer.cancel();
isInLazyMode = true;
- if(isLazyModePaused) {
- resumeLazyModeCountDownTimer.cancel();
- } else {
- isLazyModePaused = true;
- lazyModeHandler.removeCallbacks(lazyModeRunnable);
- window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ isLazyModePaused = true;
+ lazyModeHandler.removeCallbacks(lazyModeRunnable);
+ window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+ if(startTimer) {
+ resumeLazyModeCountDownTimer.start();
}
- resumeLazyModeCountDownTimer.start();
}
@Subscribe
@@ -330,8 +325,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
public void onStop() {
super.onStop();
if(isInLazyMode) {
- pauseLazyMode();
- resumeLazyModeCountDownTimer.cancel();
+ pauseLazyMode(false);
}
}