私はこの問題のためにプライベートBroadcastReceiverクラスを使用することになりました。
private class RefreshStatusReceiver extends BroadcastReceiver {
private RefreshStatusReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
int requestType = intent.getBundleExtra("bundle").getInt(NetworkHandler.REQUEST_TYPE);
if (requestType == NetworkHandler.FLY) {
configHandler();
}
}
}
onPauseメソッドとonResumeメソッドでそれらを登録および登録解除します
@Override
protected void onResume() {
super.onResume();
mRefreshStatusReceiver = new RefreshStatusReceiver();
IntentFilter mStatusIntentFilter = new IntentFilter(NetworkHandler.REFRESH_COMPLETED_ACTION);
mStatusIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
LocalBroadcastManager.getInstance(this).registerReceiver(mRefreshStatusReceiver, mStatusIntentFilter);
}
@Override
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mRefreshStatusReceiver);
}
IntentServiceで、次のようにコールバックを開始しました
Bundle bundle = new Bundle();
bundle.putInt(CONNECTION_STATE, connectionState);
bundle.putInt(REQUEST_TYPE, requestType);
Intent localIntent = new Intent(REFRESH_COMPLETED_ACTION).putExtra("bundle",bundle);
LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);
Ottoバスクラスは、呼び出し元と呼び出し先の両方がメインスレッドにある場合にのみ機能するため、使用できませんでした(別のスレッドが必要な場合は、greenbotのEventbusを使用してください)。また、コールバックは別のコンテキストで呼び出されるため、元のアクティビティのコンテキストなどからトーストを作成することはできません。