Skip to content

Commit 47e8827

Browse files
committed
Client:优化性能,去除多余的刷新;解决主界面我的SettingFragment不自动刷新
1 parent 8e75a24 commit 47e8827

13 files changed

Lines changed: 216 additions & 141 deletions

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
android:windowSoftInputMode="stateAlwaysHidden" />
8787
<activity
8888
android:name="apijson.demo.client.activity_fragment.UserActivity"
89+
android:launchMode="singleTop"
8990
android:screenOrientation="portrait"
9091
android:windowSoftInputMode="stateAlwaysHidden" />
9192
<activity

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/MainTabActivity.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,21 +195,20 @@ protected void selectTab(int position) {
195195
public void initData() {// 必须调用
196196
super.initData();
197197

198-
reloadAll();
198+
if (isCurrentUserCorrect() == false) {
199+
reloadAll();
200+
}
199201
}
200202

201-
@Override
202-
public void run() {
203-
204-
}
205-
206203

207204
@Override
208205
protected void reloadAll() {
206+
Log.d(TAG, "reloadAll >>> ");
209207
HttpRequest.getUser(APIJSONApplication.getInstance().getCurrentUserId(), 0, new OnHttpResponseListener() {
210208

211209
@Override
212210
public void onHttpResponse(int requestCode, String resultJson, Exception e) {
211+
Log.d(TAG, "reloadAll >>> HttpRequest.getUser.onHttpResponse >> saveCurrentUser >>");
213212
APIJSONApplication.getInstance().saveCurrentUser(new JSONResponse(resultJson).getObject(User.class));
214213
runUiThread(new Runnable() {
215214

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/MomentListFragment.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import zuo.biao.apijson.JSONResponse;
2222
import zuo.biao.apijson.SQL;
2323
import zuo.biao.apijson.StringUtil;
24+
import zuo.biao.library.base.BaseView.OnDataChangedListener;
2425
import zuo.biao.library.interfaces.AdapterCallBack;
2526
import zuo.biao.library.interfaces.CacheCallBack;
2627
import zuo.biao.library.interfaces.OnBottomDragListener;
@@ -57,7 +58,8 @@
5758
* 查看 .SettingUtil 中的@must和@warn
5859
*/
5960
public class MomentListFragment extends BaseHttpListFragment<MomentItem, MomentAdapter>
60-
implements CacheCallBack<MomentItem>, OnHttpResponseListener, Runnable, TopBarMenuCallback, OnBottomDragListener {
61+
implements CacheCallBack<MomentItem>, OnHttpResponseListener, TopBarMenuCallback
62+
, OnBottomDragListener, OnDataChangedListener {
6163
private static final String TAG = "MomentListFragment";
6264

6365
//与Activity通信<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -133,6 +135,8 @@ public static MomentListFragment createInstance(int range, long id, JSONObject s
133135
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
134136
super.onCreateView(inflater, container, savedInstanceState);
135137

138+
registerObserver(this);
139+
136140
argument = getArguments();
137141
if (argument != null) {
138142
range = argument.getInt(ARGUMENT_RANGE, range);
@@ -329,16 +333,18 @@ public void onDragBottom(boolean rightToLeft) {
329333

330334
@Override
331335
public void onRefresh() {
332-
if (range == RANGE_ALL) {
333-
run();
334-
} else {
336+
if (range == RANGE_USER_CIRCLE) {
335337
loadAfterCorrect();
338+
} else {
339+
super.onRefresh();
336340
}
337341
}
338342

339343
@Override
340-
public void run() {
341-
super.onRefresh();
344+
public void onDataChanged() {
345+
if (range == RANGE_USER_CIRCLE) {
346+
super.onRefresh();
347+
}
342348
}
343349

344350
//系统自带监听方法 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/SettingFragment.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import zuo.biao.apijson.JSONResponse;
2020
import zuo.biao.apijson.StringUtil;
21+
import zuo.biao.library.base.BaseView.OnDataChangedListener;
2122
import zuo.biao.library.manager.HttpManager.OnHttpResponseListener;
2223
import zuo.biao.library.ui.AlertDialog;
2324
import zuo.biao.library.ui.AlertDialog.OnDialogButtonClickListener;
@@ -44,7 +45,7 @@
4445
* @use new SettingFragment(),详细使用见.DemoFragmentActivity(initData方法内)
4546
*/
4647
public class SettingFragment extends BaseFragment implements OnClickListener, OnDialogButtonClickListener
47-
, OnHttpResponseListener {
48+
, OnHttpResponseListener, OnDataChangedListener {
4849
private static final String TAG = "SettingFragment";
4950

5051
//与Activity通信<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -67,12 +68,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
6768
setContentView(R.layout.setting_fragment);
6869
//类相关初始化,必须使用>>>>>>>>>>>>>>>>
6970

71+
registerObserver(this);
72+
7073
//功能归类分区方法,必须调用<<<<<<<<<<
7174
initView();
7275
initData();
7376
initEvent();
7477
//功能归类分区方法,必须调用>>>>>>>>>>
75-
78+
7679
return view;
7780
}
7881

@@ -132,8 +135,7 @@ public void initData() {//必须调用
132135
}
133136

134137
@Override
135-
public void run() {
136-
//do nothing
138+
public void onDataChanged() {
137139
setUser(APIJSONApplication.getInstance().getCurrentUser());
138140
}
139141

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/UserActivity.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
* @author Lemon
6666
*/
6767
public class UserActivity extends BaseActivity implements OnClickListener, OnBottomDragListener
68-
, OnBottomMenuItemClickListener, OnHttpResponseListener, Runnable, OnDialogButtonClickListener {
68+
, OnBottomMenuItemClickListener, OnHttpResponseListener, OnDialogButtonClickListener, OnDataChangedListener {
6969
public static final String TAG = "UserActivity";
7070

7171
public static final String INTENT_IS_ON_EDIT_MODE = "INTENT_IS_ON_EDIT_MODE";
@@ -92,6 +92,8 @@ protected void onCreate(Bundle savedInstanceState) {
9292
super.onCreate(savedInstanceState);
9393
setContentView(R.layout.user_activity, this);
9494

95+
registerObserver(this);
96+
9597
intent = getIntent();
9698
id = intent.getLongExtra(INTENT_ID, id);
9799
isOnEditMode = intent.getBooleanExtra(INTENT_IS_ON_EDIT_MODE, isOnEditMode);
@@ -255,12 +257,12 @@ public void initData() {//必须调用
255257
super.initData();
256258

257259
if (isCurrentUserCorrect() == false) {//解决不能在未登录情况下查看
258-
run();
260+
onDataChanged();
259261
}
260262
}
261263

262264
@Override
263-
public void run() {
265+
public void onDataChanged() {
264266
tvBaseTitle.setText(isOnEditMode ? "编辑资料" : (isCurrentUser(id) ? "我的资料" : "详细资料"));
265267

266268
if (bottomMenuView != null) {
@@ -475,8 +477,7 @@ public void onHttpResponse(int requestCode, String resultJson, Exception e) {
475477
case HTTP_PUT:
476478
if (isSucceed) {
477479
isDataChanged = false;
478-
sendBroadcast(new Intent(ActionUtil.ACTION_USER_CHANGED)
479-
.putExtra(INTENT_ID, id));
480+
sendBroadcast(new Intent(ActionUtil.ACTION_RELOAD_CURRENT_USER));
480481
}
481482
showShortToast(isSucceed ? "提交成功" : "提交失败,请检查网络后重试");
482483
break;

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/activity_fragment/UserListFragment.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import zuo.biao.apijson.JSONRequest;
2222
import zuo.biao.apijson.JSONResponse;
2323
import zuo.biao.apijson.StringUtil;
24+
import zuo.biao.library.base.BaseView.OnDataChangedListener;
2425
import zuo.biao.library.interfaces.AdapterCallBack;
2526
import zuo.biao.library.interfaces.CacheCallBack;
2627
import zuo.biao.library.interfaces.OnBottomDragListener;
@@ -54,7 +55,8 @@
5455
* 查看 .SettingUtil 中的@must和@warn
5556
*/
5657
public class UserListFragment extends BaseHttpListFragment<User, UserAdapter>
57-
implements CacheCallBack<User>, OnHttpResponseListener, Runnable, OnBottomDragListener, TopBarMenuCallback {
58+
implements CacheCallBack<User>, OnHttpResponseListener, OnBottomDragListener
59+
, TopBarMenuCallback, OnDataChangedListener {
5860
// private static final String TAG = "UserListFragment";
5961

6062
//与Activity通信<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -148,6 +150,8 @@ public static UserListFragment createInstance(List<Long> idList) {
148150
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
149151
super.onCreateView(inflater, container, savedInstanceState);
150152

153+
registerObserver(this);
154+
151155
argument = getArguments();
152156
if (argument != null) {
153157
idList = (List<Long>) argument.getSerializable(ARGUMENT_ID_LIST);
@@ -344,16 +348,18 @@ public void onDragBottom(boolean rightToLeft) {
344348

345349
@Override
346350
public void onRefresh() {
347-
if (range == RANGE_ALL) {
348-
run();
349-
} else {
351+
if (range == RANGE_USER_FRIEND) {
350352
loadAfterCorrect();
353+
} else {
354+
super.onRefresh();
351355
}
352356
}
353357

354358
@Override
355-
public void run() {
356-
super.onRefresh();
359+
public void onDataChanged() {
360+
if (range == RANGE_USER_FRIEND) {
361+
super.onRefresh();
362+
}
357363
}
358364

359365
//系统自带监听方法 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

APIJSON(Android)/APIJSON(ADT)/APIJSONApp/APIJSONApp/src/apijson/demo/client/base/BaseActivity.java

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package apijson.demo.client.base;
1616

1717
import zuo.biao.library.base.BaseBroadcastReceiver;
18+
import zuo.biao.library.base.BaseView.OnDataChangedListener;
1819
import zuo.biao.library.util.Log;
1920
import zuo.biao.library.util.StringUtil;
2021
import android.content.BroadcastReceiver;
@@ -27,7 +28,7 @@
2728
import apijson.demo.client.model.User;
2829
import apijson.demo.client.util.ActionUtil;
2930

30-
public abstract class BaseActivity extends zuo.biao.library.base.BaseActivity implements Runnable {
31+
public abstract class BaseActivity extends zuo.biao.library.base.BaseActivity {
3132
private static final String TAG = "BaseActivity";
3233

3334

@@ -40,7 +41,6 @@ protected void onCreate(Bundle savedInstanceState) {
4041

4142
setCurrentUser();
4243

43-
BaseBroadcastReceiver.register(context, receiver, ActionUtil.ACTION_USER_CHANGED);
4444
}
4545

4646
private void setCurrentUser() {
@@ -71,33 +71,31 @@ protected void toLoginActivity() {
7171
public void initData() {
7272
loadAfterCorrect();
7373
}
74-
75-
/*只有当isCurrentUserCorrect()时才会被调用,如果不符合则会获取currentUser并再次判断来决定是否调用
76-
*/
77-
@Override
78-
public abstract void run();
79-
74+
75+
8076
private boolean isDataChanged = false;
8177
/**
8278
*/
8379
protected void invalidate() {
8480
if (isRunning() == false) {
8581
isDataChanged = true;
86-
Log.w(TAG, "invalidate isRunning() == false >> return;");
82+
Log.w(TAG, "onDataChanged isRunning() == false >> return;");
8783
return;
8884
}
8985
isDataChanged = false;
90-
86+
9187
setCurrentUser();
9288
loadAfterCorrect();
9389
}
94-
90+
9591
@Override
96-
protected void onResume() {
92+
public void onResume() {
9793
super.onResume();
9894
if (isDataChanged) {
99-
Log.d(TAG, "onResume isDataChanged >> invalidate();");
100-
invalidate();
95+
if (onDataChangedListener != null) {
96+
Log.d(TAG, "onResume isDataChanged >> onDataChangedListener.onDataChanged();");
97+
onDataChangedListener.onDataChanged();
98+
}
10199
}
102100
}
103101

@@ -109,7 +107,9 @@ protected void loadAfterCorrect() {
109107
Log.e(TAG, "loadAfterCorrect isCurrentUserCorrect() == false >> return;");
110108
return;
111109
}
112-
run();
110+
if (onDataChangedListener != null) {
111+
onDataChangedListener.onDataChanged();
112+
}
113113
}
114114

115115

@@ -130,11 +130,20 @@ public boolean isUserCorrect(User user) {
130130

131131
@Override
132132
protected void onDestroy() {
133-
BaseBroadcastReceiver.unregister(context, receiver);
133+
unregisterObserver();
134134
super.onDestroy();
135135
}
136136

137-
137+
private OnDataChangedListener onDataChangedListener;
138+
protected void registerObserver(OnDataChangedListener onDataChangedListener) {
139+
this.onDataChangedListener = onDataChangedListener;
140+
BaseBroadcastReceiver.register(context, receiver, ActionUtil.ACTION_USER_CHANGED);
141+
}
142+
protected void unregisterObserver() {
143+
onDataChangedListener = null;
144+
BaseBroadcastReceiver.unregister(context, receiver);
145+
}
146+
138147
private BroadcastReceiver receiver = new BroadcastReceiver() {
139148

140149
public void onReceive(Context context, Intent intent) {

0 commit comments

Comments
 (0)