Skip to content

Commit 15e8c7b

Browse files
committed
修复一些BUG
1 parent a0fa04c commit 15e8c7b

15 files changed

+105
-48
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1010
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
1111
<uses-permission android:name="android.permission.INTERNET"/>
12-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
12+
<!--<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
1313
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
14-
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
14+
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>-->
1515
<uses-permission android:name="android.permission.READ_LOGS"/>
1616

1717
<application

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void onAppOpenEvent(Context context) {
2626
}
2727

2828
private static void onAdEvent(Context context, Map<String, String> map) {
29-
MobclickAgent.onEvent(context, " APP_AD_EVENT", map);
29+
MobclickAgent.onEvent(context, "APP_AD_EVENT", map);
3030
}
3131

3232
/**
@@ -56,4 +56,23 @@ public static void onLaunchAdClickEvent(Context context, String id, String name)
5656
map.put("name", name);
5757
onAdEvent(context, map);
5858
}
59+
60+
61+
/**
62+
* 用户登录事件,为了保护用户的隐私,这里只统计登录的blogApp,不记录帐号信息。
63+
* 登录失败只统计错误信息
64+
*
65+
* @param blogApp 登录成功的blogApp
66+
* @param isSuccess 是否成功
67+
* @param msg 失败的错误信息
68+
*/
69+
public static void onLoginEvent(Context context, String blogApp, boolean isSuccess, String msg) {
70+
71+
Map<String, String> map = new HashMap<>();
72+
map.put("success", String.valueOf(isSuccess));
73+
map.put("blogApp", blogApp);
74+
map.put("message", msg);
75+
MobclickAgent.onEvent(context, "APP_LOGIN_EVENT", map);
76+
}
77+
5978
}

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

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
import android.support.multidex.MultiDex;
66

77
import com.avos.avoscloud.AVOSCloud;
8+
import com.avos.avoscloud.feedback.FeedbackThread;
89
import com.nostra13.universalimageloader.core.ImageLoader;
910
import com.rae.cnblogs.sdk.UserProvider;
1011
import com.rae.cnblogs.sdk.bean.UserInfoBean;
1112
import com.rae.cnblogs.sdk.db.DbCnblogs;
1213
import com.rae.cnblogs.sdk.db.DbFactory;
1314
import com.rae.swift.session.SessionManager;
1415
import com.squareup.leakcanary.LeakCanary;
15-
import com.squareup.leakcanary.RefWatcher;
16+
import com.tencent.bugly.Bugly;
1617
import com.tencent.bugly.beta.Beta;
1718
import com.tencent.tinker.loader.app.TinkerApplication;
1819
import com.tencent.tinker.loader.shareutil.ShareConstants;
@@ -25,14 +26,14 @@
2526
*/
2627
public class CnblogsApplication extends TinkerApplication {
2728

28-
private static RefWatcher refWatcher;
29-
30-
31-
public static void watch(Object obj) {
32-
if (refWatcher != null) {
33-
refWatcher.watch(obj);
34-
}
35-
}
29+
// private static RefWatcher refWatcher;
30+
//
31+
//
32+
// public static void watch(Object obj) {
33+
// if (refWatcher != null) {
34+
// refWatcher.watch(obj);
35+
// }
36+
// }
3637

3738
public CnblogsApplication() {
3839
super(ShareConstants.TINKER_ENABLE_ALL, "com.rae.cnblogs.CnblogsApplicationProxy");
@@ -45,13 +46,16 @@ public void onCreate() {
4546
// 级别较高的初始化操作
4647
DbCnblogs.init(getApplication());
4748
RaeImageLoader.initImageLoader(getApplication());
49+
// 日志上报
50+
Bugly.init(getApplication(), BuildConfig.BUGLY_APP_ID, BuildConfig.DEBUG);
4851
if (!LeakCanary.isInAnalyzerProcess(this)) {
49-
refWatcher = LeakCanary.install(this);
52+
LeakCanary.install(this);
5053
}
5154

5255
// LeanCloud用户反馈初始化
5356
AVOSCloud.initialize(getApplication(), BuildConfig.LEAN_CLOUD_APP_ID, BuildConfig.LEAN_CLOUD_APP_KEY);
54-
AVOSCloud.setDebugLogEnabled(BuildConfig.DEBUG);
57+
FeedbackThread.getInstance();
58+
// AVOSCloud.setDebugLogEnabled(BuildConfig.DEBUG);
5559

5660

5761
// 一些要求不高的初始化操作放到线程中去操作
@@ -62,13 +66,9 @@ public void run() {
6266
SessionManager.initWithConfig(new SessionManager.ConfigBuilder().context(getApplication()).userClass(UserInfoBean.class).build());
6367
initUmengShareConfig();
6468

65-
66-
// 日志上报
67-
// Bugly.init(getApplication(), BuildConfig.BUGLY_APP_ID, BuildConfig.DEBUG);
68-
69-
if (BuildConfig.BUILD_TYPE.equals("debug") || BuildConfig.DEBUG) {
70-
onDebugMode();
71-
}
69+
// if (BuildConfig.BUILD_TYPE.equals("debug") || BuildConfig.DEBUG) {
70+
// onDebugMode();
71+
// }
7272
}
7373
}).start();
7474
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ private static void put(@NonNull Disposable disposable, String tag) {
5151
disposables = new ArrayList<>();
5252
sObservableDisposableList.put(tag, disposables);
5353
}
54+
Log.d("rae-rx", "添加标签:" + tag + "; 大小:" + sObservableDisposableList.get(tag).size());
5455
sObservableDisposableList.get(tag).add(disposable);
5556
}
5657

@@ -80,6 +81,7 @@ public static void dispose() {
8081
*/
8182
public static void dispose(String tag) {
8283
try {
84+
Log.w("rae-rx", "释放标签:" + tag);
8385
if (TextUtils.isEmpty(tag) || !sObservableDisposableList.containsKey(tag)) {
8486
return;
8587
}

app/src/main/java/com/rae/cnblogs/adapter/BlogListItemAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
import com.rae.cnblogs.RaeImageLoader;
1717
import com.rae.cnblogs.model.BlogItemViewHolder;
1818
import com.rae.cnblogs.model.ItemLoadingViewHolder;
19+
import com.rae.cnblogs.sdk.UserProvider;
1920
import com.rae.cnblogs.sdk.bean.BlogBean;
2021
import com.rae.cnblogs.sdk.bean.BlogType;
2122
import com.rae.swift.Rx;
22-
import com.rae.swift.session.SessionManager;
2323

2424
import java.util.ArrayList;
2525
import java.util.List;
@@ -100,7 +100,7 @@ public void onBindViewHolder(RecyclerView.ViewHolder vh, int position, final Blo
100100
@Override
101101
public void onClick(View v) {
102102
// 判断是否已经登录
103-
if (SessionManager.getDefault().isLogin()) {
103+
if (UserProvider.getInstance().isLogin()) {
104104
AppRoute.jumpToBlogger(v.getContext(), m.getBlogApp());
105105
} else {
106106
AppRoute.jumpToLogin(v.getContext());

app/src/main/java/com/rae/cnblogs/presenter/impl/BasePresenter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
public abstract class BasePresenter<V> {
1818
protected Context mContext;
19+
protected Context mApplicationContext;
1920

2021
protected V mView;
2122

@@ -24,6 +25,7 @@ public abstract class BasePresenter<V> {
2425
public BasePresenter(Context context, V view) {
2526
mView = view;
2627
mContext = context;
28+
mApplicationContext = context.getApplicationContext();
2729
mTag = getClass().getSimpleName();
2830
}
2931

@@ -44,9 +46,9 @@ public String getString(int resId) {
4446
}
4547

4648
public void destroy() {
49+
cancelRequest();
4750
mView = null;
4851
mContext = null;
49-
cancelRequest();
5052
}
5153

5254
/**

app/src/main/java/com/rae/cnblogs/presenter/impl/BloggerPresenterImpl.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,4 @@ public boolean isFollowed() {
8080
return mBloggerInfo != null && mBloggerInfo.isFollowed();
8181
}
8282

83-
@Override
84-
public void destroy() {
85-
super.destroy();
86-
}
8783
}

app/src/main/java/com/rae/cnblogs/presenter/impl/LauncherPresenterImpl.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44
import android.os.CountDownTimer;
5+
import android.text.TextUtils;
56

67
import com.rae.cnblogs.AppMobclickAgent;
78
import com.rae.cnblogs.RxObservable;
@@ -14,8 +15,6 @@
1415
import com.rae.cnblogs.sdk.utils.ApiUtils;
1516

1617
import io.reactivex.Observable;
17-
import io.reactivex.ObservableSource;
18-
import io.reactivex.functions.Function;
1918

2019
/**
2120
* 启动页
@@ -67,25 +66,27 @@ public void advertClick() {
6766

6867
@Override
6968
public void stop() {
69+
RxObservable.dispose("thread");
7070
mCountDownTimer.cancel();
7171
}
7272

73+
@Override
74+
public void destroy() {
75+
stop();
76+
super.destroy();
77+
}
78+
7379
@Override
7480
public void start() {
7581
mCountDownTimer.start();
7682

7783
// 从本地加载
78-
RxObservable.newThread()
79-
.flatMap(new Function<Integer, ObservableSource<AdvertBean>>() {
80-
@Override
81-
public ObservableSource<AdvertBean> apply(Integer integer) throws Exception {
82-
AdvertBean item = mDbAdvert.getLauncherAd();
83-
if (item == null) {
84-
throw new NullPointerException();
85-
}
86-
return createObservable(Observable.just(item));
87-
}
88-
})
84+
AdvertBean item = mDbAdvert.getLauncherAd();
85+
if (item == null) {
86+
mView.onNormalImage();
87+
return;
88+
}
89+
createObservable(Observable.just(item))
8990
.subscribe(new ApiDefaultObserver<AdvertBean>() {
9091
@Override
9192
protected void onError(String message) {
@@ -100,7 +101,7 @@ protected void accept(AdvertBean advertBean) {
100101

101102
private void onSuccess(AdvertBean data) {
102103
mAdvertBean = data;
103-
if (mAdvertBean == null) {
104+
if (mAdvertBean == null || TextUtils.isEmpty(data.getImage_url())) {
104105
mView.onNormalImage();
105106
return;
106107
}

app/src/main/java/com/rae/cnblogs/presenter/impl/LoginPresenterImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import android.content.Context;
44
import android.text.TextUtils;
5+
import android.util.Log;
56

7+
import com.rae.cnblogs.AppMobclickAgent;
68
import com.rae.cnblogs.R;
79
import com.rae.cnblogs.presenter.ILoginPresenter;
810
import com.rae.cnblogs.sdk.ApiDefaultObserver;
@@ -61,8 +63,16 @@ public ObservableSource<UserInfoBean> apply(UserInfoBean userInfoBean) throws Ex
6163
}
6264
})
6365
.subscribe(new ApiDefaultObserver<UserInfoBean>() {
66+
@Override
67+
public void onError(Throwable e) {
68+
// 统计错误信息
69+
AppMobclickAgent.onLoginEvent(mApplicationContext, "ERROR", false, e == null ? "没有错误信息" : Log.getStackTraceString(e));
70+
super.onError(e);
71+
}
72+
6473
@Override
6574
protected void onError(String msg) {
75+
6676
if (!TextUtils.isEmpty(msg) && msg.contains("验证码")) {
6777
// 验证码错误
6878
mView.onLoginVerifyCodeError();
@@ -73,6 +83,8 @@ protected void onError(String msg) {
7383

7484
@Override
7585
protected void accept(UserInfoBean data) {
86+
// 统计登录事件
87+
AppMobclickAgent.onLoginEvent(mApplicationContext, data.getBlogApp(), true, null);
7688
// 友盟统计用户
7789
if (mFromLogin) {
7890
MobclickAgent.onProfileSignIn(data.getBlogApp());

app/src/main/java/com/rae/cnblogs/service/job/BlogContentJob.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import android.content.Context;
44
import android.net.ConnectivityManager;
5+
import android.os.Handler;
6+
import android.os.Message;
57

68
import com.rae.cnblogs.sdk.CnblogsApiFactory;
79
import com.rae.cnblogs.sdk.api.IBlogApi;
@@ -31,6 +33,13 @@ public class BlogContentJob extends AsyncDownloadJob {
3133
private final INewsApi mNewsApi;
3234
private final ConnectivityManager mConnectivityManager;
3335
private DbBlog mDbBlog;
36+
private Handler mHandler = new Handler(new Handler.Callback() {
37+
@Override
38+
public boolean handleMessage(Message msg) {
39+
performJob();
40+
return false;
41+
}
42+
});
3443

3544
public BlogContentJob(Context context) {
3645
mBlogApi = CnblogsApiFactory.getInstance(context).getBlogApi();
@@ -41,6 +50,22 @@ public BlogContentJob(Context context) {
4150

4251
@Override
4352
public void run() {
53+
// 延期执行,避免过多的刷新操作
54+
mHandler.removeMessages(0);
55+
mHandler.sendEmptyMessageDelayed(0, 10000);
56+
}
57+
58+
@Override
59+
public void cancel() {
60+
super.cancel();
61+
mHandler.removeMessages(0);
62+
mHandler = null;
63+
}
64+
65+
/**
66+
* 执行任务
67+
*/
68+
private void performJob() {
4469
// 查询没有内容的博客
4570
Observable.just(mDbBlog.findAllWithoutBlogContent())
4671
.subscribeOn(Schedulers.io())
Loading
-920 Bytes
Loading

app/src/main/res/layout/activity_blog_content.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
android:layout_width="wrap_content"
4343
android:layout_height="wrap_content"
4444
android:layout_marginLeft="9dp"
45-
android:text="RAE敲代码"
45+
android:text="@string/app_name"
4646
android:textColor="@color/ph2"
4747
android:textSize="12sp"/>
4848

@@ -122,9 +122,9 @@
122122
android:layout_width="wrap_content"
123123
android:layout_height="wrap_content"
124124
android:background="@drawable/ic_comment_toolbar"
125+
android:gravity="center"
125126
android:textColor="@color/badge_color"
126127
android:textSize="9sp"
127-
android:gravity="center"
128128
android:textStyle="bold"
129129
android:visibility="visible"/>
130130

@@ -134,9 +134,9 @@
134134
<RelativeLayout
135135
android:id="@+id/ll_like"
136136
android:layout_width="0dp"
137-
android:gravity="center"
138137
android:layout_height="32dp"
139-
android:layout_weight="1">
138+
android:layout_weight="1"
139+
android:gravity="center">
140140

141141
<TextView
142142
android:id="@+id/tv_like_badge"

app/src/main/res/layout/item_news_list.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
android:layout_marginRight="6dp"
3535
android:layout_toLeftOf="@+id/img_blog_avatar"
3636
android:ellipsize="end"
37-
android:lineSpacingExtra="6sp"
37+
android:lineSpacingExtra="5sp"
3838
android:text="7 月 25 日消息,在昨晚两轮口水战之后,今日苏宁云商集团副董事长孙为民再次在微博发声,称京东可以对苏宁和天天快递等可以泄私愤,但不可以对桐庐系快递企业犯众怒。此前刘强东曾说,未来中国民营物流就剩两家。孙为民称,京东物流跻身中国前 100 位没问题,但进入前十位还是有距离的。以下是..."
3939
android:textColor="@color/ph2"
4040
android:textSize="13sp"/>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<string name="share_app">推荐分享</string>
8383
<string name="praises">给个好评</string>
8484
<string name="praises_error">您似乎没有安装应用市场</string>
85-
<string name="share_app_url">http://www.raeblog.com</string>
85+
<string name="share_app_url">http://www.raeblog.com/cnblogs/</string>
8686
<string name="share_app_title">推荐一个好应用给你「博客园」</string>
8787
<string name="share_app_desc">听说大牛都在用的博客园APP,一个面向开发者的知识分享社区,一个纯净的技术交流社区。</string>
8888
<string name="market_url">market://details?id=com.rae.cnblogs</string>

0 commit comments

Comments
 (0)