2017-08-21 6 views
0

同じデバイスで実行中に同じアプリの2つの異なるフレーバーを構築しました。あるアプリからログアウトすると、他のアプリもログアウトします。私のアプリでは、ログアウトはネットワークコールなので、1つのログアウトボタンをクリックすると、両方のアプリケーションのネットワークコールを見ることができます。 Retrofitを使用してネットワーク通話を行っています。ログアウトがクリックされると、私はイベントバスでログアウトイベントをプッシュしており、MainLandingActivityはそれをサブスクライブしています。ここで1つのアンドロイドフレーバーでログアウトすると、同じデバイスで他のフレーバーもログアウトします

@Override 
public void onClick(DialogInterface dialogInterface, int i) { 
           showSimpleProgressDialog(context); 
    EventBus eventBus = EventBus.getDefault(); 
    LogoutEvent logoutEvent = new LogoutEvent(false, context); 
    eventBus.post(logoutEvent); 
} 

は、サブスクリプションコード

@Subscribe 
public void onLogout(LogoutEvent logoutEvent) { 
    try { 
     if (NetworkReceiver.isConnected) { 
       Intent intent = new Intent(this, UploadDataService.class); 
       intent.putExtra(Const.SERVICE_KEY, Const.MAIN_LANDING_LOGOUT); 
       startService(intent); 
      } else { 
       RUtils.removeSimpleProgressDialog(); 
       RUtils.showSnackbar(rvMainLanding, getString(R.string.logout_no_internet_error), Snackbar.LENGTH_LONG); 
      } 

    } catch (Exception e) { 
     e.printStackTrace(); 
     Crashlytics.logException(e); 
     RUtils.removeSimpleProgressDialog(); 
     RUtils.showSnackbar(rvMainLanding, getString(R.string.logout_failed_error), Snackbar.LENGTH_LONG); 
    } 
} 

答えて

0

は、それが働いて頂けれ、UploadDataServiceはログアウトのグローバルブロードキャストを送信していました。 LocalBroadcastManagerに置き換えて、問題を解決しました。

関連する問題