Skip to content

Commit d9d9b46

Browse files
committed
updte codes
1 parent 9d7fda0 commit d9d9b46

File tree

6 files changed

+48
-37
lines changed

6 files changed

+48
-37
lines changed

app/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ dependencies {
4040
compile 'com.android.support:appcompat-v7:23.4.0'
4141
compile 'com.github.orhanobut:logger:1.12'
4242
compile 'com.jakewharton.rxbinding:rxbinding:0.3.0'
43-
//retrofit+gson+rxjava
4443
compile 'com.squareup.retrofit2:retrofit:2.0.2'
4544
compile 'com.squareup.retrofit2:retrofit:2.0.2'
4645
compile 'com.squareup.retrofit2:converter-gson:2.0.2'

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
<uses-permission android:name="android.permission.INTERNET" />
66
<application
7-
android:name="com.malin.rxjava.application.RxJavaApplication"
7+
android:name=".application.RxJavaApplication"
88
android:allowBackup="true"
99
android:icon="@mipmap/malin"
1010
android:label="@string/app_name"
1111
android:supportsRtl="true"
1212
android:theme="@style/AppTheme">
1313

14-
<activity android:name="com.malin.rxjava.activity.MainActivity">
14+
<activity android:name=".activity.MainActivity">
1515
<intent-filter>
1616
<action android:name="android.intent.action.MAIN" />
1717

app/src/main/java/com/malin/rxjava/activity/MainActivity.java

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525

2626
package com.malin.rxjava.activity;
2727

28+
import android.content.Context;
2829
import android.graphics.Bitmap;
2930
import android.graphics.Canvas;
3031
import android.graphics.Paint;
3132
import android.graphics.PorterDuff;
3233
import android.graphics.PorterDuffXfermode;
3334
import android.graphics.drawable.Drawable;
3435
import android.os.Bundle;
36+
import android.support.v4.content.ContextCompat;
3537
import android.support.v7.app.AppCompatActivity;
3638
import android.text.TextUtils;
3739
import android.util.Log;
@@ -50,6 +52,7 @@
5052
import com.jakewharton.rxbinding.widget.RxTextView;
5153
import com.jakewharton.rxbinding.widget.TextViewTextChangeEvent;
5254
import com.malin.rxjava.R;
55+
import com.malin.rxjava.application.RxJavaApplication;
5356
import com.malin.rxjava.constant.Constant;
5457
import com.malin.rxjava.factory.DataFactory;
5558
import com.malin.rxjava.factory.ImageNameFactory;
@@ -109,18 +112,18 @@ public class MainActivity extends AppCompatActivity {
109112
private ProgressBar mProgressBar;
110113
private EditText mSearchEditText;
111114
private TextView mResultTextView;
115+
private Context mContext;
112116

113117
@Override
114118
protected void onCreate(Bundle savedInstanceState) {
115119
super.onCreate(savedInstanceState);
116120
setContentView(R.layout.activity_main);
117121
initializeLogAndDeviceInfo();
118122
initView();
119-
testFuncation(0);//RxJava基础概念的练习
123+
initData();
124+
testFuncation(9);//RxJava基础概念的练习
120125
}
121126

122-
123-
124127
/**
125128
* 初始化Logger日志输出配置和获取手机尺寸信息
126129
*/
@@ -133,12 +136,16 @@ private void initializeLogAndDeviceInfo() {
133136
* 用于显示图片的初始化
134137
*/
135138
private void initView() {
139+
mContext = this;
136140
mImageView = (ImageView) findViewById(R.id.iv_image);
137141
mResultTextView = (TextView) findViewById(R.id.tv_result);
138142
mSearchEditText = (EditText) findViewById(R.id.ed_search);
139143
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
140144
}
141145

146+
private void initData() {
147+
mContext = this;
148+
}
142149

143150
/**
144151
* 故意让程序出现异常,可以用来测试
@@ -244,7 +251,7 @@ public void onError(Throwable e) {
244251
@Override
245252
public void onNext(String s) {
246253
Logger.d("观察者-observer:onNext():" + s);
247-
// getException();//故意让程序出现异常,用于测试onError()方法的执行....
254+
//getException();//故意让程序出现异常,用于测试onError()方法的执行....
248255
}
249256
};
250257

@@ -294,7 +301,7 @@ public void onError(Throwable e) {
294301
public void onNext(Object o) {
295302
String str = (String) o;
296303
Logger.d("观察者-observer:onNext():" + str);
297-
// getException();//故意让程序出现异常,用于测试onError()方法的执行....
304+
// getException();//故意让程序出现异常,用于测试onError()方法的执行....
298305
}
299306
};
300307

@@ -472,13 +479,13 @@ private void method6() {
472479
@Override
473480
public void call(Subscriber<? super Drawable> subscriber) {
474481
Logger.d("被观察者");
475-
Drawable drawable = getResources().getDrawable(drawableRes);
482+
Drawable drawable = ContextCompat.getDrawable(RxJavaApplication.getApplication(), drawableRes);
476483
subscriber.onNext(drawable);
477484
subscriber.onCompleted();
478485
}
479486
})
480487
.subscribeOn(Schedulers.io())//事件产生的线程。指定 subscribe() 发生在 IO 线程
481-
// doOnSubscribe() 之后有 subscribeOn() 的话,它将执行在离它最近的 subscribeOn() 所指定的线程。这里将执行在主线程中
488+
// doOnSubscribe() 之后有 observeOn() 的话,它将执行在离它最近的 observeOn() 所指定的线程。这里将执行在主线程中
482489
.doOnSubscribe(new Action0() {
483490
@Override
484491
public void call() {
@@ -491,7 +498,7 @@ public void call() {
491498
.subscribe(new Subscriber<Drawable>() { //3:订阅 //2:观察者
492499
@Override
493500
public void onCompleted() {
494-
if (mProgressBar!=null){
501+
if (mProgressBar != null) {
495502
mProgressBar.setVisibility(View.GONE);
496503
}
497504
Logger.d("观察者 onCompleted()");
@@ -500,7 +507,7 @@ public void onCompleted() {
500507

501508
@Override
502509
public void onError(Throwable e) {
503-
if (mProgressBar!=null){
510+
if (mProgressBar != null) {
504511
mProgressBar.setVisibility(View.GONE);
505512
}
506513
Logger.d("观察者 onError()");
@@ -512,6 +519,7 @@ public void onError(Throwable e) {
512519
public void onNext(Drawable drawable) {
513520
Toast.makeText(MainActivity.this, "观察者 onNext()", Toast.LENGTH_SHORT).show();
514521
Logger.d("观察者 onNext()");
522+
if (mImageView == null || drawable == null) return;
515523
mImageView.setImageDrawable(drawable);
516524
}
517525
});
@@ -529,11 +537,11 @@ private void method7() {
529537
@Override
530538
public Drawable call(Integer integer) {// 参数类型 String
531539
Logger.d("integer:" + integer);
532-
return getResources().getDrawable(integer);
540+
return ContextCompat.getDrawable(RxJavaApplication.getApplication(), integer);
533541
}
534542
})
535543
.subscribeOn(Schedulers.io())//事件产生的线程。指定 subscribe() 发生在 IO 线程
536-
//doOnSubscribe() 之后有 subscribeOn() 的话,它将执行在离它最近的 subscribeOn() 所指定的线程。这里将执行在主线程中
544+
//doOnSubscribe() 之后有 observeOn() 的话,它将执行在离它最近的 observeOn() 所指定的线程。这里将执行在主线程中
537545
.doOnSubscribe(new Action0() {
538546
@Override
539547
public void call() {
@@ -563,6 +571,7 @@ public void onError(Throwable e) {
563571

564572
@Override
565573
public void onNext(Drawable drawable) {
574+
if (mImageView == null || drawable == null) return;
566575
mImageView.setImageDrawable(drawable);
567576
Logger.d("观察者:onNext(Drawable drawable):" + drawable.toString());
568577
}
@@ -591,7 +600,7 @@ private void method8() {
591600
* {@link #method8()}
592601
*/
593602
private void method9() {
594-
//just(T...): 将传入的参数依次发送出来,实现遍历的目的
603+
//just(T...): 将传入的参数依次发送出来,实现遍历的目的
595604
Observable.from(DataFactory.getData())
596605
.subscribeOn(Schedulers.io())
597606
.observeOn(AndroidSchedulers.mainThread())
@@ -605,7 +614,7 @@ public void call(Student student) {
605614

606615

607616
/**
608-
* 需要:输出学生的姓名:将每个学生的(姓名)依次发射出去
617+
* 需要:输出学生的姓名:将每个学生的(姓名)依次发射出去
609618
* RxJava解决方案
610619
* {@link #method9()}
611620
*/
@@ -709,7 +718,7 @@ public void onError(Throwable e) {
709718
public void onNext(Student student) {
710719
ArrayList<Course> courses = student.courses;
711720
for (Course course : courses) {
712-
Logger.d("观察者:" +course.name);
721+
Logger.d("观察者:" + course.name);
713722
}
714723
}
715724
});
@@ -744,6 +753,7 @@ public void call(ArrayList<Course> courses) {
744753
}
745754

746755
//---------------------------------------10: flatMap()的使用-------------------------------------------------------------
756+
747757
/**
748758
* 需要:输出每一个学生选修的课程,对method13的简化
749759
* 嵌套循环的RxJava解决方案
@@ -782,14 +792,13 @@ public void call(Course course) {
782792
}
783793

784794

785-
//---------------------------------------10: RxBinding的引入-------------------------------------------------------------
795+
//---------------------------------------10: RxBinding的引入-------------------------------------------------------------
786796

787797

788798
/**
789799
* 需要防止快速连续点击,短时间内连续点击.
790-
*
791800
*/
792-
private void method15(){
801+
private void method15() {
793802

794803

795804
mImageView.setOnClickListener(new View.OnClickListener() {
@@ -809,8 +818,8 @@ public void run() {
809818
});
810819

811820

812-
813821
}
822+
814823
/**
815824
* RxBinding
816825
* RxBinding 是 Jake Wharton 的一个开源库,它提供了一套在 Android 平台上的基于 RxJava 的 Binding API。
@@ -848,7 +857,7 @@ public void call(Void aVoid) {
848857
/**
849858
* EditText,每隔500ms,去响应变化
850859
*/
851-
private void method18(){
860+
private void method18() {
852861
mSearchEditText.setVisibility(View.VISIBLE);
853862
RxTextView.textChangeEvents(mSearchEditText)
854863
.debounce(500, TimeUnit.MILLISECONDS)
@@ -866,8 +875,8 @@ public void onError(Throwable e) {
866875
public void onNext(TextViewTextChangeEvent textViewTextChangeEvent) {
867876
String changedMessage = textViewTextChangeEvent.text().toString();
868877
Logger.d(TAG, changedMessage);
869-
if (!TextUtils.isEmpty(changedMessage)){
870-
ToastUtil.getInstance().showToast(MainActivity.this,changedMessage);
878+
if (!TextUtils.isEmpty(changedMessage)) {
879+
ToastUtil.getInstance().showToast(MainActivity.this, changedMessage);
871880
}
872881
}
873882
});
@@ -879,7 +888,6 @@ public void onNext(TextViewTextChangeEvent textViewTextChangeEvent) {
879888
//操作符号 Range操作符根据出入的初始值n和数目m发射一系列大于等于n的m个值
880889
//例如:实现:输出1,2,3,4,5
881890
// 其使用也非常方便,仅仅制定初始值和数目就可以了,不用自己去实现对Subscriber的调用
882-
883891
private void method19() {
884892
Observable.range(1, 5)
885893
.subscribeOn(Schedulers.io())
@@ -944,7 +952,7 @@ public void onFailure(Call<User> call, Throwable t) {
944952
/**
945953
* 使用Retrofit网络库,同时使用RxJava 获取androidmalin的GitHub个人信息
946954
*/
947-
private void method22(){
955+
private void method22() {
948956
//TODO:1:被观察者,数据源
949957
//TODO:2:观察者
950958
//TODO:3:订阅,被观察者 被 观察者订阅
@@ -977,7 +985,7 @@ public void onError(Throwable e) {
977985

978986
@Override
979987
public void onNext(User user) {
980-
Logger.d( "onNext()");
988+
Logger.d("onNext()");
981989
String message = "Github Name :" + user.name + "\nWebsite :" + user.blog + "\nCompany Name :" + user.company;
982990
Toast.makeText(MainActivity.this, "onNext", Toast.LENGTH_SHORT).show();
983991
Logger.d(message);
@@ -987,7 +995,6 @@ public void onNext(User user) {
987995
}
988996

989997

990-
991998
private ArrayAdapter<String> mAdapter;
992999
private CompositeSubscription mSubscription = new CompositeSubscription();
9931000
private ListView mResultListView;
@@ -1050,7 +1057,6 @@ public void onNext(List<Contributor> contributors) {
10501057
}
10511058

10521059

1053-
10541060
private static final int COUNT = 10;
10551061
private static final int TIME_ALL = 5000;
10561062
private ArrayList<Long> timeList = new ArrayList<>();
@@ -1219,28 +1225,28 @@ private void testFuncation(int number) {
12191225
}
12201226

12211227

1222-
case 19:{
1228+
case 19: {
12231229
method19();
12241230
break;
12251231
}
12261232

1227-
case 20:{
1233+
case 20: {
12281234
method20();
12291235
break;
12301236
}
12311237

1232-
case 21:{
1238+
case 21: {
12331239
method21();
12341240
break;
12351241
}
12361242

12371243

1238-
case 22:{
1244+
case 22: {
12391245
method22();
12401246
break;
12411247
}
12421248

1243-
case 23:{
1249+
case 23: {
12441250
method23();
12451251
break;
12461252
}
@@ -1307,8 +1313,8 @@ private void recycleImageView() {
13071313
* 递归释放所有子view涉及的图片,背景,DrawingCache,监听器等等资源,
13081314
* 让Activity成为一个不占资源的空壳,泄露了也不会导致图片资源被持有。
13091315
*
1310-
* @description Unbind the rootView
13111316
* @param view:the root view of the layout
1317+
* @description Unbind the rootView
13121318
13131319
* @link http://stackoverflow.com/questions/9461364/exception-in-unbinddrawables
13141320
* http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=400656149&idx=1&sn=122b4f4965fafebf78ec0b4fce2ef62a&3rd=MzA3MDU4NTYzMw==&scene=6#rd

app/src/main/java/com/malin/rxjava/application/RxJavaApplication.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,15 @@
3737
* 修改备注:
3838
*/
3939
public class RxJavaApplication extends Application {
40+
41+
private static RxJavaApplication application;
4042
@Override
4143
public void onCreate() {
4244
super.onCreate();
45+
application = this;
4346
}
4447

48+
public static RxJavaApplication getApplication(){
49+
return application;
50+
}
4551
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
mavenCentral()
66
}
77
dependencies {
8-
classpath 'com.android.tools.build:gradle:2.2.2'
8+
classpath 'com.android.tools.build:gradle:2.2.3'
99
// NOTE: Do not place your application dependencies here; they belong
1010
// in the individual module build.gradle files
1111
}

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

0 commit comments

Comments
 (0)