Android巧妙设计(一)--透明Fragment监听Activity生命周期

问题:

不知道大家曾经在开发自己组件时,想办法脱离关联当前Activity界面的又想监听Activity的生命周期?(例如:监听android6.0权限的回调)。

或者面试过程中,被提问“请讲一下Glide中的巧妙设计?”(通过透明的Fragment监听当前Activity的生命周期,从而节约流量和内存,并且防止内存泄露)

 

解决思路:

1.创建一个透明的Fragment。

class MyF : Fragment(){
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            Log.e(TAG,"onCreate")
        }

        override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
            Log.e(TAG,"onCreateView")
            return super.onCreateView(inflater, container, savedInstanceState)
        }

        override fun onPause() {
            super.onPause()
            Log.e(TAG,"onPause")
        }

        override fun onStop() {
            super.onStop()
            Log.e(TAG,"onStop")
        }

        override fun onDestroy() {
            super.onDestroy()
            Log.e(TAG,"onDestroy")
        }
    }

2.将该Fragment添加到当前Activity中,这样你就可以在Fragment对应的生命周期中处理你的需求。

var fragment = supportFragmentManager.findFragmentByTag("tag")
  if(fragment==null){
    fragment = MyF();
    supportFragmentManager.beginTransaction().add(fragment,"tag").commitAllowingStateLoss()
  }

应用场景:

1.android 权限onRequestPermissionResult授权结果回调。

2.自定义的组件监听Activity的生命周期,从而管理组件的生命周期。

 

你可能感兴趣的:(Android巧妙设计(一)--透明Fragment监听Activity生命周期)