Lifecycle 简单使用

Lifecycle:使用生命周期感知型组件处理生命周期

生命周期感知型组件可执行操作来响应另外一个组件(如Activity和Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护;

一种常见的模式是在Activity和Fragment的生命周期方法中实现依赖组件的操作。但是,这种模式会导致代码条理性很差而且会扩散错误。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移入组件本身中。

Androidx.lifecycle软件包提供了可用于构建生命周期感知型组件的类和接口-这些组件可以根据Activity或Fragment的当前生命周期状态自动调整其行为。

在Android框架中定义的大多数应用组件都存在生命周期。生命周期由系统或进程运行的框架代码管理。它们是Android运作方式的核心,应用必须遵循她它们。如果不这样做,可能会引发内存泄漏甚至应用崩溃。

生命周期

lifecycle是一个类,用于存储有关组件(如Activity或Fragment)的生命周期状态的信息,并允许其他对象观察此状态。

LifecycleOwner

LifecycleOwner是单一方法接口,表示类具有Lifecycle.它具有一种方法(即getLifecycle()),该方法必须由类实现。如果您尝试管理整个应用进程的生命周期,请参阅ProcessLifecyleOwner。

public class MyLocationListener implements LifecycleObserver {

    public MyLocationListener(LifecycleOwner lifecycleOwner) {
        lifecycleOwner.getLifecycle().addObserver(this);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void start() {
        System.out.println("----------------------start");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void stop() {
        System.out.println("----------------------stop");
    }
}
public class MainActivity extends AppCompatActivity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new MyLocationListener(this);

        textView = findViewById(R.id.text);

    }

    public void onClick(View view) {
        String value = ((EditText) findViewById(R.id.edtext)).getText().toString();
    }
}

参考

https://developer.android.google.cn/topic/libraries/architecture/lifecycle

https://codelabs.developers.google.com/codelabs/android-lifecycles/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值