Skip to content

Commit 259eee2

Browse files
committed
性能优化
1 parent f577ae2 commit 259eee2

4 files changed

Lines changed: 53 additions & 14 deletions

File tree

diycode-app/src/main/java/com/gcssloop/diycode/fragment/NewsListFragment.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.content.Intent;
2727
import android.net.Uri;
2828
import android.os.Bundle;
29+
import android.support.annotation.Nullable;
2930
import android.support.v4.util.ArrayMap;
3031
import android.support.v4.widget.NestedScrollView;
3132
import android.support.v4.widget.SwipeRefreshLayout;
@@ -97,6 +98,13 @@ public static NewsListFragment newInstance() {
9798
return fragment;
9899
}
99100

101+
@Override
102+
public void onCreate(@Nullable Bundle savedInstanceState) {
103+
super.onCreate(savedInstanceState);
104+
mDiycode = Diycode.getSingleInstance();
105+
mDataCache = new DataCache(getContext());
106+
}
107+
100108
@Override
101109
protected int getLayoutId() {
102110
return R.layout.fragment_recycler_refresh;
@@ -116,12 +124,11 @@ private void loadData() {
116124

117125
@Override
118126
protected void initViews(ViewHolder holder, View root) {
119-
mDiycode = Diycode.getSingleInstance();
120-
mDataCache = new DataCache(getContext());
121127
mFooter = holder.get(R.id.footer);
122128
initRefreshLayout(holder);
123129
initRecyclerView(getContext(), holder);
124130
initListener(holder);
131+
loadData();
125132
}
126133

127134
private void initRefreshLayout(ViewHolder holder) {
@@ -261,7 +268,6 @@ public void onNewsList(GetNewsListEvent event) {
261268
public void onStart() {
262269
super.onStart();
263270
EventBus.getDefault().register(this);
264-
loadData();
265271
}
266272

267273
@Override

diycode-app/src/main/java/com/gcssloop/diycode/fragment/SitesListFragment.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import android.content.Context;
2626
import android.os.Bundle;
27+
import android.support.annotation.Nullable;
2728
import android.support.v7.widget.GridLayoutManager;
2829
import android.support.v7.widget.RecyclerView;
2930
import android.view.View;
@@ -41,7 +42,6 @@
4142
import com.gcssloop.diycode_sdk.api.Diycode;
4243
import com.gcssloop.diycode_sdk.api.sites.bean.Sites;
4344
import com.gcssloop.diycode_sdk.api.sites.event.GetSitesEvent;
44-
import com.gcssloop.diycode_sdk.log.Logger;
4545

4646
import org.greenrobot.eventbus.EventBus;
4747
import org.greenrobot.eventbus.Subscribe;
@@ -75,17 +75,25 @@ public static SitesListFragment newInstance() {
7575
return fragment;
7676
}
7777

78+
79+
@Override
80+
public void onCreate(@Nullable Bundle savedInstanceState) {
81+
super.onCreate(savedInstanceState);
82+
mDiycode = Diycode.getSingleInstance();
83+
mDataCache = new DataCache(getContext());
84+
mDataCache.getSitesItems();
85+
}
86+
7887
@Override
7988
protected int getLayoutId() {
8089
return R.layout.fragment_sites;
8190
}
8291

8392
@Override
8493
protected void initViews(ViewHolder holder, View root) {
85-
mDiycode = Diycode.getSingleInstance();
86-
mDataCache = new DataCache(getContext());
8794
mFooter = holder.get(R.id.footer);
8895
initRecyclerView(getContext(), holder);
96+
loadData();
8997
}
9098

9199
private void initRecyclerView(final Context context, ViewHolder holder) {
@@ -114,9 +122,9 @@ public int getSpanSize(int position) {
114122

115123
// 加载数据
116124
private void loadData() {
117-
List<Sites> sitesList = mDataCache.getSites();
125+
List<Object> sitesList = mDataCache.getSitesItems();
118126
if (sitesList != null) {
119-
convertData(sitesList);
127+
mAdapter.addDatas(sitesList);
120128
mFooter.setText(FOOTER_NORMAL);
121129
} else {
122130
mDiycode.getSites();
@@ -131,7 +139,7 @@ public void onSitesList(GetSitesEvent event) {
131139
if (event.isOk()) {
132140
List<Sites> sitesList = event.getBean();
133141
convertData(sitesList);
134-
mDataCache.saveSites(event.getBean());
142+
// mDataCache.saveSites(event.getBean());
135143
} else {
136144
toast("获取 sites 失败");
137145
mFooter.setText(FOOTER_ERROR);
@@ -156,13 +164,13 @@ private void convertData(List<Sites> sitesList) {
156164
}
157165
}
158166
mAdapter.addDatas(items);
167+
mDataCache.saveSitesItems(mAdapter.getDatas());
159168
}
160169

161170
@Override
162171
public void onStart() {
163172
super.onStart();
164173
EventBus.getDefault().register(this);
165-
loadData();
166174
}
167175

168176
@Override

diycode-app/src/main/java/com/gcssloop/diycode/fragment/TopicListFragment.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import android.content.Context;
2626
import android.os.Bundle;
27+
import android.support.annotation.Nullable;
2728
import android.support.v4.util.ArrayMap;
2829
import android.support.v4.widget.NestedScrollView;
2930
import android.support.v4.widget.SwipeRefreshLayout;
@@ -96,21 +97,37 @@ public static TopicListFragment newInstance() {
9697
return fragment;
9798
}
9899

100+
@Override
101+
public void onCreate(@Nullable Bundle savedInstanceState) {
102+
super.onCreate(savedInstanceState);
103+
mConfig = Config.getSingleInstance();
104+
mDiycode = Diycode.getSingleInstance();
105+
mDataCache = new DataCache(getContext());
106+
// 预加载数据, 提前将磁盘数据读取到内存,后续读取更快速
107+
List<Topic> topics = mDataCache.getTopicsList();
108+
if (topics != null) {
109+
for (Topic topic : topics) {
110+
mDataCache.getTopicPreview(topic.getId());
111+
}
112+
}
113+
}
114+
99115
@Override
100116
protected int getLayoutId() {
101117
return R.layout.fragment_recycler_refresh;
102118
}
103119

104120
@Override
105121
protected void initViews(ViewHolder holder, View root) {
106-
mConfig = Config.getSingleInstance();
107-
mDiycode = Diycode.getSingleInstance();
108-
mDataCache = new DataCache(getContext());
122+
long time = System.currentTimeMillis();
123+
Logger.e("time = " + time);
109124
mFooter = holder.get(R.id.footer);
110125
mScrollView = holder.get(R.id.scroll_view);
111126
initRefreshLayout(holder);
112127
initRecyclerView(getContext(), holder);
113128
initListener(holder);
129+
initData();
130+
Logger.e("initViews 耗时 = " + (System.currentTimeMillis() - time) + " ms");
114131
}
115132

116133
// 加载数据,默认从缓存加载
@@ -249,7 +266,6 @@ public void onTopicList(GetTopicsListEvent event) {
249266
public void onStart() {
250267
super.onStart();
251268
EventBus.getDefault().register(this);
252-
initData();
253269
}
254270

255271
@Override

diycode-app/src/main/java/com/gcssloop/diycode/utils/DataCache.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,13 @@ public void saveSites(List<Sites> sitesList) {
142142
public List<Sites> getSites() {
143143
return getData("sites_");
144144
}
145+
146+
public void saveSitesItems(List<Object> sitesList) {
147+
ArrayList<Object> data = new ArrayList<>(sitesList);
148+
saveData("sites_item_", data);
149+
}
150+
151+
public List<Object> getSitesItems() {
152+
return getData("sites_item_");
153+
}
145154
}

0 commit comments

Comments
 (0)