Android知识点集锦一

本文汇总了Android开发的关键知识点,包括DataBinding的原理和优势,Lifecycle组件的作用及其工作原理,ListView与RecycleView的区别,ViewHolder模式的优缺点,Fragment的使用与管理,以及内存泄漏和Java内存回收机制。通过对这些概念的深入理解,开发者能更好地掌握Android应用的开发和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是 Android DataBinding

DataBinding是谷歌官方发布的一个数据绑定的框架,是MVVM模式在Android上的一种实现,用于降低布局和逻辑的耦合性,使代码逻辑更加清晰。MVVM相对于MVP,其实就是将Presenter层替换层了ViewModel层。DataBinding能够省去我们一直以来的findViewById()步骤,大量减少Activity内的代码,数据能够单向或双向绑定到layout文件中,有助于防止内存泄漏,而且能自动进行空检测以避免空指针异常。
弊端:需要修改布局文件,布局文件代码变多,变复杂。

2、什么是Lifecycle

Google官方推出的Android Jetpack中的一个基于观察者模式实现的架构组件,用于管理Activity和Fragment的生命周期。让业务组件能够自动感知Activity和Fragment的生命周期。
使用方法:

class MainActivity : AppCompatActivity() {
   
    private val myLifecycle = MyLifecycle()

    override fun onCreate(savedInstanceState: Bundle?) {
   
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        lifecycle.addObserver(myLifecycle)
    }

    override fun onDestroy() {
   
        super.onDestroy()
        lifecycle.removeObserver(myLifecycle)
    }
}

class MyLifecycle : LifecycleObserver{
   

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onCreate() ")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onStart() ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResume(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onResume() ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPause(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onPause() ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onStop() ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy(@NonNull owner: LifecycleOwner){
   
        Log.i("MyLifecycle", "onDestroy() ")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    fun onLifecycleChanged(@NonNull  owner: LifecycleOwner, @NonNull event: Lifecycle.Event){
   
        Log.i("MyLifecycle", "onLifecycleChanged: Event =  $event")
    }
}

原理解析(以AppCompatActivity为例):

继承关系:AppCompatActivity -》 FragmentActivity -》ComponentActivity -》LifecycleOwner

public class FragmentActivity implements LifecycleOwner{
   
   final LifecycleRegistry mFragmentLifecycleRegistry = new LifecycleRegistry(this);
   
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
   
    ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值