Skip to content

Instantly share code, notes, and snippets.

View user-mw's full-sized avatar

Vladislav user-mw

  • Russian Federation
View GitHub Profile
@user-mw
user-mw / Activity.java
Created December 7, 2019 14:39
Activity onRetainNonConfigurationInstance
public class Activity {
// Code
public Object onRetainNonConfigurationInstance() {
return null;
}
// Code
}
@user-mw
user-mw / FragmentActivity.java
Created December 7, 2019 14:46
FragmentActivity onRetainNonConfigurationInstance
public class FragmentActivity {
@Override
@Nullable
public final Object onRetainNonConfigurationInstance() {
// Code
NonConfigurationInstances nci = new NonConfigurationInstances();
// Code
nci.viewModelStore = mViewModelStore;
return nci;
@user-mw
user-mw / FragmentActivity.java
Created December 7, 2019 15:26
FragmentActivity getLastCustom...() and onRetainCustom...()
public class FragmentActivity {
// Code
public Object getLastCustomNonConfigurationInstance() {
NonConfigurationInstances nc = (NonConfigurationInstances)
           getLastNonConfigurationInstance();
return nc != null ? nc.custom : null;
}
public Object onRetainCustomNonConfigurationInstance() {
return null;
@user-mw
user-mw / Fragment.java
Created December 8, 2019 15:19
Fragment getViewModelStore() implementation in 2018
public class Fragment {
// Code
public ViewModelStore getViewModelStore() {
// Code
if (mViewModelStore == null) {
mViewModelStore = new ViewModelStore();
}
@user-mw
user-mw / FragmentActivity.java
Created December 8, 2019 16:26
FragmentActivity onRetainNonConfigurationInstance() retain FragmentManagerNonConfig
public final Object onRetainNonConfigurationInstance() {
// Code
FragmentManagerNonConfig fragments = mFragments.retainNestedNonConfig();
// Code
NonConfigurationInstances nci = new NonConfigurationInstances();
nci.custom = custom;
nci.viewModelStore = mViewModelStore;
nci.fragments = fragments;
@user-mw
user-mw / FragmentState.java
Created December 9, 2019 18:08
Initialization of viewModelStore for fragment in FragmentState
final class FragmentState implements Parcelable {
// Code
public Fragment instantiate(FragmentHostCallback host, FragmentContainer container,
Fragment parent, FragmentManagerNonConfig childNonConfig,
ViewModelStore viewModelStore) {
// Code, that initialize a new Fragment
mInstance.mViewModelStore = viewModelStore;
@user-mw
user-mw / ViewModel.java
Created December 11, 2019 18:06
ViewModel class 2019
public abstract class ViewModel {
protected void onCleared() { // Code }
final void clear() { // Code }
<T> T setTagIfAbsent(String key, T newValue) { // Code }
<T> T getTag(String key) { // Code }
@user-mw
user-mw / Fragment.java
Created December 11, 2019 18:18
Fragment method getViewModelStore() in 2019
public class Fragment {
// Code
public ViewModelStore getViewModelStore() {
if (mFragmentManager == null) {
throw new IllegalStateException(// Exception text);
}
return mFragmentManager.getViewModelStore(this);
}
// Code
}
@user-mw
user-mw / FragmentManagerImpl.java
Created December 13, 2019 16:25
FragmentManagerImpl getViewModelStore()
public class FragmentManagerImpl {
// Code
ViewModelStore getViewModelStore(@NonNull Fragment f) {
return mNonConfig.getViewModelStore(f);
}
// Code
}
@user-mw
user-mw / FragmentManagerImpl.java
Created December 14, 2019 14:54
FragmentManagerImpl attachController()
final class FragmentManagerImpl extends FragmentManager implements LayoutInflater.Factory2 {
// Code
public void attachController(@NonNull FragmentHostCallback host,
@NonNull FragmentContainer container, @Nullable final Fragment parent) {
// Code
if (parent != null) {
// Code
} else if (host instanceof ViewModelStoreOwner) {
ViewModelStore viewModelStore = ((ViewModelStoreOwner) host).getViewModelStore();
mNonConfig = FragmentManagerViewModel.getInstance(viewModelStore);