Skip to content

Commit c468501

Browse files
AriesHooAriesHoo
authored andcommitted
新增:FastStackUtil 退出程序是否杀死程序exit(boolean kill)
新增:FastRetryWhen 检查联网状态以操作重试机制
1 parent 9c88255 commit c468501

File tree

4 files changed

+64
-11
lines changed

4 files changed

+64
-11
lines changed

app/src/main/java/com/aries/library/fast/demo/impl/ActivityControlImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.graphics.Color;
88
import android.media.AudioManager;
99
import android.os.Bundle;
10+
import android.support.annotation.NonNull;
1011
import android.support.v4.app.Fragment;
1112
import android.support.v4.app.FragmentActivity;
1213
import android.support.v4.app.FragmentManager;
@@ -309,6 +310,12 @@ public void onFragmentPaused(FragmentManager fm, Fragment f) {
309310
LoggerManager.i(TAG, "onFragmentPaused:统计Fragment:" + f.getClass().getSimpleName());
310311
MobclickAgent.onPageEnd(f.getClass().getSimpleName());
311312
}
313+
314+
@Override
315+
public void onFragmentDestroyed(@NonNull FragmentManager fm, @NonNull Fragment f) {
316+
super.onFragmentDestroyed(fm, f);
317+
LoggerManager.i(TAG, "onFragmentDestroyed:" + f.getClass().getSimpleName());
318+
}
312319
};
313320
}
314321

app/src/main/java/com/aries/library/fast/demo/impl/AppImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public long quipApp(boolean isFirst, Activity activity) {
202202
if (isFirst) {
203203
ToastUtil.show(R.string.fast_quit_app);
204204
} else {
205-
FastStackUtil.getInstance().exit();
205+
FastStackUtil.getInstance().exit(false);
206206
}
207207
return 2000;
208208
}

library/src/main/java/com/aries/library/fast/retrofit/FastRetryWhen.java

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.aries.library.fast.retrofit;
22

33

4+
import android.content.Context;
5+
46
import com.aries.library.fast.manager.LoggerManager;
7+
import com.aries.library.fast.util.NetworkUtil;
58

69
import java.net.ConnectException;
710
import java.net.SocketException;
@@ -18,30 +21,59 @@
1821
* @Author: AriesHoo on 2018/10/10 15:42
1922
* @E-Mail: AriesHoo@126.com
2023
* @Function: RxJava 重试机制--retryWhen操作符{@link Observable#retryWhen(Function)}
21-
* @Description:
24+
* @Description: 1、2019-1-7 17:57:09 新增Context参数以检查网络连接状态定向重试机制
2225
*/
2326
public class FastRetryWhen implements Function<Observable<? extends Throwable>, ObservableSource<?>> {
27+
28+
private Context mContext;
2429
/**
2530
* 最大尝试次数--不包含原始请求次数
2631
*/
27-
private final int mRetryMaxTime;
32+
private int mRetryMaxTime;
2833
/**
2934
* 尝试时间间隔ms
3035
*/
31-
private final long mRetryDelay;
36+
private long mRetryDelay;
3237
/**
3338
* 记录已尝试次数
3439
*/
3540
private int mRetryCount;
3641
private String TAG = getClass().getSimpleName();
3742

38-
public FastRetryWhen(int retryMaxTime, long retryDelay) {
43+
public FastRetryWhen(Context context, int retryMaxTime, long retryDelay) {
44+
this.mContext = context;
3945
this.mRetryMaxTime = retryMaxTime;
4046
this.mRetryDelay = retryDelay;
4147
}
4248

49+
public FastRetryWhen(Context context) {
50+
this(context, 3, 500);
51+
}
52+
4353
public FastRetryWhen() {
44-
this(3, 500);
54+
this(null);
55+
}
56+
57+
/**
58+
* 重试间隔
59+
*
60+
* @param delay
61+
* @return
62+
*/
63+
public FastRetryWhen setRetryDelay(long delay) {
64+
mRetryDelay = delay;
65+
return this;
66+
}
67+
68+
/**
69+
* 重试次数
70+
*
71+
* @param time
72+
* @return
73+
*/
74+
public FastRetryWhen setRetryMaxTime(int time) {
75+
mRetryMaxTime = time;
76+
return this;
4577
}
4678

4779
/**
@@ -55,6 +87,10 @@ public Observable<?> apply(Observable<? extends Throwable> observable) {
5587
return observable.flatMap(new Function<Throwable, ObservableSource<?>>() {
5688
@Override
5789
public ObservableSource<?> apply(Throwable throwable) {
90+
//未连接网络直接返回异常
91+
if (NetworkUtil.isConnected(mContext)) {
92+
return Observable.error(throwable);
93+
}
5894
//仅仅对连接失败相关错误进行重试
5995
if (throwable instanceof ConnectException
6096
|| throwable instanceof UnknownHostException

library/src/main/java/com/aries/library/fast/util/FastStackUtil.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
* 2、2018-7-30 10:00:45 修改方法返回值
1717
* 3、2018-11-29 11:44:16 新增{@link #pop(Activity, boolean)} 增加是否调用finish()方法参数,避免因Activity状态变换(如横竖屏切换)造成onActivityDestroyed时候切换回来状态无法保存
1818
* 即:{@link Activity#onCreate(Bundle)} onCreate(Bundle savedInstanceState) savedInstanceState对象为空-因为pop的时候已将其finish
19+
* 4、2019-1-7 17:51:08 新增{@link #exit(boolean)} 是否杀死进程控制
1920
*/
2021
public class FastStackUtil {
2122
private final String TAG = this.getClass().getSimpleName();
@@ -180,16 +181,25 @@ public FastStackUtil popAllExceptCurrent() {
180181
}
181182
}
182183

184+
public FastStackUtil exit() {
185+
return exit(true);
186+
}
187+
183188
/**
184189
* 应用程序退出
190+
*
191+
* @param kill 是否杀掉进程
192+
* @return
185193
*/
186-
public FastStackUtil exit() {
194+
public FastStackUtil exit(boolean kill) {
187195
try {
188196
popAll();
189-
//退出JVM(java虚拟机),释放所占内存资源,0表示正常退出(非0的都为异常退出)
190-
System.exit(0);
191-
//从操作系统中结束掉当前程序的进程
192-
android.os.Process.killProcess(android.os.Process.myPid());
197+
if (kill) {
198+
//退出JVM(java虚拟机),释放所占内存资源,0表示正常退出(非0的都为异常退出)
199+
System.exit(0);
200+
//从操作系统中结束掉当前程序的进程
201+
android.os.Process.killProcess(android.os.Process.myPid());
202+
}
193203
} catch (Exception e) {
194204
System.exit(-1);
195205
LoggerManager.e(TAG, "exit():" + e.getMessage());

0 commit comments

Comments
 (0)