小编ddo*_*dog的帖子

使用rxjava全局处理网络异常进行改造

我试图在全局级别的应用程序中处理异常,因此改造会抛出一个错误,我会在一些特定的类中捕获它,并使用逻辑来处理这些错误.

我有一个界面

@POST("/token")
AuthToken refreshToken(@Field("grant_type") String grantType, @Field("refresh_token") String refreshToken);
Run Code Online (Sandbox Code Playgroud)

和可观察的

/**
 * Refreshes auth token
 *
 * @param refreshToken
 * @return
 */
public Observable<AuthToken> refreshToken(String refreshToken) {
    return Observable.create((Subscriber<? super AuthToken> subscriber) -> {
        try {
            subscriber.onNext(apiManager.refreshToken(REFRESH_TOKEN, refreshToken));
            subscriber.onCompleted();
        } catch (Exception e) {
            subscriber.onError(e);
        }
    }).subscribeOn(Schedulers.io());
}
Run Code Online (Sandbox Code Playgroud)

当我从服务器获得401(无效令牌或其他一些网络相关的错误)时,我想刷新令牌并重复其余的呼叫.是否有一种方法可以使用rxjava对所有其余的调用使用某种可观察的全局捕获此错误,处理它并重复抛出它的调用?

现在我使用subject来捕获.subscribe()这样的错误

private static BehaviorSubject errorEvent = BehaviorSubject.create();

public static BehaviorSubject<RetrofitError> getErrorEvent() {
    return errorEvent;
}
Run Code Online (Sandbox Code Playgroud)

并在一些电话中

getCurrentUser = userApi.getCurrentUser().observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                    (user) -> {
                        this.user = user;
                    },
                    errorEvent::onNext
            );
Run Code Online (Sandbox Code Playgroud)

然后在我的主要活动中,我订阅该行为主题并解析错误 …

android rx-java retrofit

19
推荐指数
1
解决办法
6222
查看次数

facebook登录按钮setfragment错误

我正在尝试使用facebook登录我的应用程序.我有一个主要活动和几个片段.使用facebook sdk 3.5.2我通过facebook官方教程做了一次,但是当我添加这一行时,authButton.setFragment(this);它给了我一个错误,我的片段不是一个片段.

(LoginButton类型中的方法setFragment(Fragment)不适用于参数(FaceobookLoginFragment))

我正在将主要类的片段添加到动作栏中

ActionBar bar = getActionBar();

bar.setDisplayShowHomeEnabled(false);

bar.setDisplayShowTitleEnabled(false);

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

String FloginTitle = "Flogin";
ActionBar.Tab FloginTab = bar.newTab();
FloginTab.setText(FloginTitle);
FloginTab.setTabListener(new TabListener(this, FloginTitle, FaceobookLoginFragment.class));
bar.addTab(FloginTab);
Run Code Online (Sandbox Code Playgroud)

这是听众

public class TabListener implements ActionBar.TabListener{

private final FragmentActivity fActivity;
private final String ftag;
private final Class fragmentClass;
private Fragment fragment;


public TabListener(FragmentActivity activity, String tag, Class fragmentClass ) {
    this.fActivity = activity;
    this.ftag = tag;
    this.fragmentClass = fragmentClass;

    this.fragment = activity.getFragmentManager().findFragmentByTag(tag);

}

@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) …
Run Code Online (Sandbox Code Playgroud)

android facebook

7
推荐指数
1
解决办法
4010
查看次数

使用 Exoplayer 设置流 mp4 视频和播放文件的标头

Api 有一个我需要设置的令牌标头,但视频未加密。我有两个问题:如何使用 exoplayer 从磁盘播放 .mpg、.mpeg、.3gp、.mov 和其他文件?如何使用 exoplayer 设置标题并从 url 流式传输 mp4 视频?

video streaming android exoplayer

5
推荐指数
2
解决办法
7806
查看次数

片段初始化RxJava/RxAndroid时如何观察?

我有两个片段,每个片段都有发布主题,在onResume()初始化时调用onNext(true).我想结合这两个主题,并在它们都返回true时调用第三类中的某些方法.我需要使用Observable吗?我找不到合适的操作,zip不起作用,因为这些是主题.我该如何结合这些?

android android-fragments rx-java

0
推荐指数
1
解决办法
1487
查看次数