Apps targeting Android 7.0 (API level 24) and higher must register the following broadcasts with registerReceiver(BroadcastReceiver, IntentFilter). Declaring a receiver in the manifest does not work.
CONNECTIVITY_ACTION
voidshowDialog(){
mStackLevel++;
// DialogFragment.show() will take care of adding the fragment// in a transaction. We also want to remove any currently showing// dialog, so make our own transaction and take care of that here.
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
// Create and show the dialog.
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog");
}
这还不算最惨的,最惨的是下面这个异常。也是由于这个才会写了这篇博客,使用Fragment基本都碰到过的一个异常。
java.lang.IllegalStateException:Can not perform this action after onSaveInstanceState
这是什么鬼。。。
还是看官方文档是怎么说的。
Caution: You can commit a transaction using commit() only prior to the activity saving its state (when the user leaves the activity). If you attempt to commit after that point, an exception will be thrown. This is because the state after the commit can be lost if the activity needs to be restored. For situations in which its okay that you lose the commit, use commitAllowingStateLoss().
Subject that emits the most recent item it has observed and all subsequent observed items to each subscribed
意思就是一旦订阅了就会发送最近的一个及后续的 item。
// observer will receive the "one", "two" and "three" events, but not "zero"//observer可以接收到"one", "two" and "three"事件,但是接收不了"zero"
BehaviorSubject<Object> subject = BehaviorSubject.create();
subject.onNext("zero");
subject.onNext("one");
subject.subscribe(observer);
subject.onNext("two");
subject.onNext("three");
CombineLatest — when an item is emitted by either of two Observables, combine the latest item emitted by each Observable via a specified function and emit items based on the results of this function
@param combiner
the function to call when this ObservableSource emits an item and the other ObservableSource has already
emitted an item, to generate the item to be emitted by the resulting ObservableSource