package com.chiclaim.rxjava; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.chiclaim.rxjava.api.ApiServiceFactory; import com.chiclaim.rxjava.api.UserApi; import retrofit.client.Response; import retrofit.mime.TypedByteArray; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.schedulers.Schedulers; import rx.subscriptions.CompositeSubscription; /** * Created by chiclaim on 2016/03/31 */ public class UseRxJavaRightWayActivity extends AppCompatActivity { final UserApi userApi = ApiServiceFactory.createService(UserApi.class); CompositeSubscription compositeSubscription = new CompositeSubscription(); Subscription subscriptionForUser; TextView tvContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_use_rxjava_right_way); tvContent = (TextView) findViewById(R.id.tv_content); subscriptionForUser = userApi.getUserInfo() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Response>() { @Override public void call(Response response) { String content = new String(((TypedByteArray) response.getBody()).getBytes()); tvContent.setText("receiver data : " + content); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { tvContent.setText("receiver error : " + throwable.getMessage()); } }); compositeSubscription.add(subscriptionForUser); } public static void launch(Context context) { context.startActivity(new Intent(context, UseRxJavaRightWayActivity.class)); } @Override protected void onStop() { super.onStop(); } @Override protected void onResume() { super.onResume(); } @Override protected void onDestroy() { super.onDestroy(); //if (!subscriptionForUser.isUnsubscribed()) { // subscriptionForUser.unsubscribe(); //} //avoid leak activity/fragment if (!compositeSubscription.isUnsubscribed()) { //调用compositeSubscription.unsubscribe()后 compositeSubscription 就不可用了.需要重新创建 compositeSubscription.unsubscribe(); } } }