Skip to content

Commit 9cc8536

Browse files
committed
性能上的一些优化
1 parent 50aaeeb commit 9cc8536

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+703
-763
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,36 @@
2626
android:name=".activity.LauncherActivity"
2727
android:screenOrientation="portrait"
2828
android:theme="@style/AppTheme.NoActionBar.FullScreen">
29-
<!-- <intent-filter>
29+
<intent-filter>
3030
<action android:name="android.intent.action.MAIN"/>
3131

3232
<category android:name="android.intent.category.LAUNCHER"/>
33-
</intent-filter>-->
33+
</intent-filter>
3434
</activity>
3535

3636
<!--主界面-->
3737
<activity
3838
android:name=".activity.MainActivity"
3939
android:screenOrientation="portrait"
4040
android:theme="@style/AppTheme.Dark">
41-
<intent-filter>
42-
<action android:name="android.intent.action.MAIN"/>
41+
<!-- <intent-filter>
42+
<action android:name="android.intent.action.MAIN"/>
4343
44-
<category android:name="android.intent.category.LAUNCHER"/>
45-
</intent-filter>
44+
<category android:name="android.intent.category.LAUNCHER"/>
45+
</intent-filter>-->
4646
</activity>
4747

48-
<!-- <activity
49-
android:name=".activity.TestActivity"
50-
android:label="测试入口"
51-
android:screenOrientation="portrait"
52-
android:theme="@style/AppTheme.Dark">
53-
<intent-filter>
54-
<action android:name="android.intent.action.MAIN"/>
48+
<!-- <activity
49+
android:name=".activity.TestActivity"
50+
android:label="测试入口"
51+
android:screenOrientation="portrait"
52+
android:theme="@style/AppTheme.Dark">
53+
<intent-filter>
54+
<action android:name="android.intent.action.MAIN"/>
5555
56-
<category android:name="android.intent.category.LAUNCHER"/>
57-
</intent-filter>
58-
</activity>-->
56+
<category android:name="android.intent.category.LAUNCHER"/>
57+
</intent-filter>
58+
</activity>-->
5959

6060
<!--博文-->
6161
<activity
@@ -93,7 +93,7 @@
9393

9494
<activity
9595
android:name=".activity.FavoritesActivity"
96-
android:label="@string/my_collection"
96+
android:label="@string/my_favorites"
9797
android:launchMode="singleTop"/>
9898

9999
<activity

app/src/main/java/com/rae/cnblogs/CnblogsApplication.java

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
package com.rae.cnblogs;
22

3+
import android.app.Application;
34
import android.content.Context;
45
import android.support.multidex.MultiDex;
56

67
import com.nostra13.universalimageloader.core.ImageLoader;
8+
import com.rae.cnblogs.sdk.UserProvider;
9+
import com.rae.cnblogs.sdk.bean.UserInfoBean;
10+
import com.rae.cnblogs.sdk.db.DbCnblogs;
711
import com.rae.cnblogs.sdk.db.DbFactory;
12+
import com.rae.swift.session.SessionManager;
813
import com.squareup.leakcanary.LeakCanary;
914
import com.squareup.leakcanary.RefWatcher;
15+
import com.tencent.bugly.Bugly;
1016
import com.tencent.bugly.beta.Beta;
1117
import com.tencent.tinker.loader.app.TinkerApplication;
1218
import com.tencent.tinker.loader.shareutil.ShareConstants;
19+
import com.umeng.socialize.PlatformConfig;
20+
import com.umeng.socialize.UMShareAPI;
1321

1422
/**
1523
* 集成热更新的应用程序
@@ -33,9 +41,38 @@ public CnblogsApplication() {
3341
@Override
3442
public void onCreate() {
3543
super.onCreate();
36-
if (BuildConfig.DEBUG && LeakCanary.isInAnalyzerProcess(this)) {
44+
45+
// 级别较高的初始化操作
46+
DbCnblogs.init(getApplication());
47+
RaeImageLoader.initImageLoader(getApplication());
48+
if (!LeakCanary.isInAnalyzerProcess(this)) {
3749
refWatcher = LeakCanary.install(this);
3850
}
51+
52+
// 一些要求不高的初始化操作放到线程中去操作
53+
new Thread(new Runnable() {
54+
@Override
55+
public void run() {
56+
UserProvider.init(getApplication());
57+
SessionManager.initWithConfig(new SessionManager.ConfigBuilder().context(getApplication()).userClass(UserInfoBean.class).build());
58+
initUmengShareConfig();
59+
60+
// 日志上报
61+
Bugly.init(getApplication(), BuildConfig.BUGLY_APP_ID, BuildConfig.DEBUG);
62+
63+
if (BuildConfig.BUILD_TYPE.equals("debug") || BuildConfig.DEBUG) {
64+
onDebugMode();
65+
}
66+
}
67+
}).start();
68+
69+
}
70+
71+
/**
72+
* 进入调试模式
73+
*/
74+
private void onDebugMode() {
75+
3976
}
4077

4178
@Override
@@ -70,4 +107,18 @@ public void clearCache() {
70107
}
71108

72109

110+
/**
111+
* 友盟分享
112+
*/
113+
private void initUmengShareConfig() {
114+
UMShareAPI.get(getApplication());
115+
PlatformConfig.setWeixin(AppConstant.WECHAT_APP_ID, AppConstant.WECHAT_APP_SECRET);
116+
PlatformConfig.setSinaWeibo(AppConstant.WEIBO_APP_ID, AppConstant.WEIBO_APP_SECRET, "http://www.raeblog.com/cnblogs/index.php/share/weibo/redirect");
117+
PlatformConfig.setQQZone(AppConstant.QQ_APP_ID, AppConstant.QQ_APP_SECRET);
118+
}
119+
120+
121+
public Application getApplication() {
122+
return this;
123+
}
73124
}

app/src/main/java/com/rae/cnblogs/CnblogsApplicationProxy.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,6 @@ public CnblogsApplicationProxy(Application application, int tinkerFlags, boolean
2424
}
2525

2626

27-
@Override
28-
public void onCreate() {
29-
super.onCreate();
30-
DbCnblogs.init(getApplication());
31-
RaeImageLoader.initImageLoader(getApplication());
32-
initUmengShareConfig();
33-
UserProvider.init(getApplication());
34-
SessionManager.initWithConfig(new SessionManager.ConfigBuilder().context(getApplication()).userClass(UserInfoBean.class).build());
35-
if (!BuildConfig.BUILD_TYPE.equals("debug")) {
36-
// 日志上报
37-
Bugly.init(getApplication(), BuildConfig.BUGLY_APP_ID, BuildConfig.DEBUG);
38-
}
39-
}
40-
41-
/**
42-
* 友盟分享
43-
*/
44-
private void initUmengShareConfig() {
45-
UMShareAPI.get(getApplication());
46-
PlatformConfig.setWeixin(AppConstant.WECHAT_APP_ID, AppConstant.WECHAT_APP_SECRET);
47-
PlatformConfig.setSinaWeibo(AppConstant.WEIBO_APP_ID, AppConstant.WEIBO_APP_SECRET, "http://www.raeblog.com/cnblogs/index.php/share/weibo/redirect");
48-
PlatformConfig.setQQZone(AppConstant.QQ_APP_ID, AppConstant.QQ_APP_SECRET);
49-
}
5027

5128

5229
}

app/src/main/java/com/rae/cnblogs/RxObservable.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,31 @@ public static <T> Observable<T> create(Observable<T> observable, final String ta
2929
.doOnSubscribe(new Consumer<Disposable>() {
3030
@Override
3131
public void accept(@NonNull Disposable disposable) throws Exception {
32-
List<Disposable> disposables = sObservableDisposableList.get(tag);
33-
if (disposables == null) {
34-
disposables = new ArrayList<>();
35-
sObservableDisposableList.put(tag, disposables);
36-
}
37-
sObservableDisposableList.get(tag).add(disposable);
32+
put(disposable, tag);
3833
}
3934
})
4035
.subscribeOn(Schedulers.io())
4136
.observeOn(AndroidSchedulers.mainThread());
4237
}
4338

39+
public static Observable<Integer> newThread() {
40+
return Observable.just(0).doOnSubscribe(new Consumer<Disposable>() {
41+
@Override
42+
public void accept(Disposable disposable) throws Exception {
43+
put(disposable, "thread");
44+
}
45+
}).subscribeOn(Schedulers.io());
46+
}
47+
48+
private static void put(@NonNull Disposable disposable, String tag) {
49+
List<Disposable> disposables = sObservableDisposableList.get(tag);
50+
if (disposables == null) {
51+
disposables = new ArrayList<>();
52+
sObservableDisposableList.put(tag, disposables);
53+
}
54+
sObservableDisposableList.get(tag).add(disposable);
55+
}
56+
4457
/**
4558
* 释放当前所有HTTP请求
4659
*/

app/src/main/java/com/rae/cnblogs/activity/FavoritesActivity.java

Lines changed: 52 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.rae.cnblogs.RxObservable;
1111
import com.rae.cnblogs.adapter.BaseItemAdapter;
1212
import com.rae.cnblogs.adapter.BookmarksAdapter;
13+
import com.rae.cnblogs.dialog.impl.MenuDialog;
14+
import com.rae.cnblogs.model.MenuDialogItem;
1315
import com.rae.cnblogs.sdk.ApiDefaultObserver;
1416
import com.rae.cnblogs.sdk.CnblogsApiFactory;
1517
import com.rae.cnblogs.sdk.Empty;
@@ -43,6 +45,7 @@ public class FavoritesActivity extends SwipeBackBaseActivity {
4345
private BookmarksAdapter mAdapter;
4446
private final List<BookmarksBean> mBookmarksDataList = new ArrayList<>();
4547
private String mTag = "FavoritesActivity";
48+
private MenuDialog mMenuDialog;
4649

4750
@Override
4851
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -65,6 +68,20 @@ public void onLoadMore() {
6568
}
6669
});
6770

71+
mMenuDialog = new MenuDialog(getContext());
72+
mMenuDialog.addDeleteItem(getString(R.string.delete_favorites));
73+
mMenuDialog.addItem(getString(R.string.cancel));
74+
mMenuDialog.setOnMenuItemClickListener(new MenuDialog.OnMenuItemClickListener() {
75+
@Override
76+
public void onMenuItemClick(MenuDialog dialog, MenuDialogItem item) {
77+
// 执行删除
78+
if (getString(R.string.delete_favorites).equalsIgnoreCase(item.getName())) {
79+
AppUI.loading(getContext());
80+
deleteFavorites((BookmarksBean) mMenuDialog.getTag());
81+
}
82+
}
83+
});
84+
6885
mAdapter.setOnItemClickListener(new BaseItemAdapter.onItemClickListener<BookmarksBean>() {
6986
@Override
7087
public void onItemClick(BookmarksBean item) {
@@ -75,34 +92,44 @@ public void onItemClick(BookmarksBean item) {
7592
mAdapter.setOnItemDeleteClickListener(new BaseItemAdapter.onItemClickListener<BookmarksBean>() {
7693
@Override
7794
public void onItemClick(final BookmarksBean item) {
78-
RxObservable.create(mBookmarksApi.delBookmarks(String.valueOf(item.getWzLinkId())), mTag)
79-
.doOnSubscribe(new Consumer<Disposable>() {
80-
@Override
81-
public void accept(Disposable disposable) throws Exception {
82-
AppUI.loading(getContext(), R.string.deleting);
83-
}
84-
})
85-
.doFinally(new Action() {
86-
@Override
87-
public void run() throws Exception {
88-
AppUI.dismiss();
89-
}
90-
})
91-
.subscribe(new Consumer<Empty>() {
92-
@Override
93-
public void accept(Empty empty) throws Exception {
94-
mAdapter.remove(item);
95-
mAdapter.notifyDataSetChanged();
95+
mMenuDialog.setTag(item);
96+
mMenuDialog.show();
97+
}
98+
});
99+
}
96100

97-
// 更新数据库
98-
DbFactory.getInstance().getBlog().removeBookmarks(item.getLinkUrl());
101+
/**
102+
* 删除收藏
103+
*
104+
* @param item
105+
*/
106+
private void deleteFavorites(final BookmarksBean item) {
107+
RxObservable.create(mBookmarksApi.delBookmarks(String.valueOf(item.getWzLinkId())), mTag)
108+
.doOnSubscribe(new Consumer<Disposable>() {
109+
@Override
110+
public void accept(Disposable disposable) throws Exception {
111+
AppUI.loading(getContext(), R.string.deleting);
112+
}
113+
})
114+
.doFinally(new Action() {
115+
@Override
116+
public void run() throws Exception {
117+
AppUI.dismiss();
118+
}
119+
})
120+
.subscribe(new Consumer<Empty>() {
121+
@Override
122+
public void accept(Empty empty) throws Exception {
123+
mAdapter.remove(item);
124+
mAdapter.notifyDataSetChanged();
99125

100-
setResult(RESULT_OK);
126+
// 更新数据库
127+
DbFactory.getInstance().getBlog().removeBookmarks(item.getLinkUrl());
101128

102-
}
103-
});
104-
}
105-
});
129+
setResult(RESULT_OK);
130+
131+
}
132+
});
106133
}
107134

108135
@Override

app/src/main/java/com/rae/cnblogs/activity/LauncherActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ protected void onStop() {
5353
mLauncherPresenter.stop();
5454
}
5555

56+
@Override
57+
protected void onDestroy() {
58+
super.onDestroy();
59+
mLauncherPresenter.destroy();
60+
}
61+
5662
private void showImage(String url) {
5763
ImageLoader.getInstance().displayImage(url, mDisplayView, RaeImageLoader.defaultOptions().showImageOnLoading(0).showImageForEmptyUri(0).showImageOnFail(0).build());
5864
}

app/src/main/java/com/rae/cnblogs/activity/LoginActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ public void onLoginClick() {
134134
// }
135135

136136

137+
137138
if (config().hasLoginGuide()) {
138139
preformLogin();
139140
} else {

app/src/main/java/com/rae/cnblogs/activity/MainActivity.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,15 @@ public void onBackPressed() {
181181
@Override
182182
protected void onDestroy() {
183183
EventBus.getDefault().unregister(this);
184-
super.onDestroy();
184+
// 停止服务
185185
if (mServiceConnection != null) {
186186
unbindService(mServiceConnection);
187187
mServiceConnection = null;
188-
stopService(new Intent(this, CnblogsService.class)); // 停止服务
188+
stopService(new Intent(this, CnblogsService.class));
189189
}
190190
RxObservable.dispose(); // 释放所有请求
191-
ImageLoader.getInstance().getMemoryCache().clear();
191+
ImageLoader.getInstance().getMemoryCache().clear(); // 清除图片内存
192+
super.onDestroy();
192193
}
193194

194195
@Override
@@ -198,8 +199,8 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
198199
if (requestCode == 100 && grantResults.length > 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {
199200
// 用户拒绝授权
200201
HintCardDialog dialog = new HintCardDialog(this);
201-
dialog.setMessage("博客园需要读取/写入您的存储卡,禁止后功能受到限制,是否再次开启?");
202-
dialog.setEnSureText("同意申请权限");
202+
dialog.setMessage(getString(R.string.permission_tips_message));
203+
dialog.setEnSureText(getString(R.string.premission_granted));
203204
dialog.setOnEnSureListener(new IAppDialogClickListener() {
204205
@Override
205206
public void onClick(IAppDialog dialog, int buttonType) {

0 commit comments

Comments
 (0)