package com.mcxtzhang.github;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.example.ZParams;
import com.example.ZRouter;
import rx.Observable;
import rx.Subscriber;
import rx.Subscription;
import rx.schedulers.Schedulers;
import rx.subscriptions.CompositeSubscription;
@ZRouter(path = "rx")
public class RxActivity extends AppCompatActivity {
private static final String TAG = "RxJava";
private CompositeSubscription msubscription;//管理所有的订阅
Button mBtnTest;
@ZParams(key = "key-string")
String mWhatString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rx);
ZParamsRxActivityBinding.bindParams(this);
Toast.makeText(this, "接受到参数???????????:" + mWhatString, Toast.LENGTH_SHORT).show();
/*Intent intent = getIntent();
if (null != intent) {
String stringExtra = intent.getStringExtra("key-string");
Toast.makeText(this, "接受到参数:" + stringExtra, Toast.LENGTH_SHORT).show();
}*/
this.msubscription = new CompositeSubscription();
findViewById(R.id.btnLoop).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted() called");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError() called with: e = [" + e + "]");
}
@Override
public void onNext(String s) {
Log.e(TAG, "onNext() called with: s = [" + s + "]");
}
};
Subscription i = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
int i = 0;
while (true) {
Log.d(TAG, "call() called with: i = [" + i + "]");
subscriber.onNext(i++ + "");
}
}
}).subscribeOn(Schedulers.io()).subscribe(subscriber);
msubscription.add(i);//把订阅加入管理集合中
}
});
findViewById(R.id.btnStop).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(RxActivity.this, "蒂娜及", Toast.LENGTH_SHORT).show();
msubscription.unsubscribe();
}
});
a();
}
void a() {
b();
}
void b() {
StringBuffer err = new StringBuffer();
StackTraceElement[] stack = Thread.currentThread().getStackTrace();
for (int i = 0; i < stack.length; i++) {
err.append("\tat ");
err.append(stack[i].toString());
err.append("\n");
}
Log.e("TAG", err.toString());
}
@Override
protected void onStop() {
super.onStop();
//在activity结束生命周期的时候取消订阅,解除对context的引用
if (msubscription != null) {
this.msubscription.unsubscribe();
}
}
}