آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

لایف سایکل

يكشنبه, ۱۹ بهمن ۱۳۹۹، ۰۶:۵۳ ب.ظ

اکتیویتی (یا فرگمنت) لایف سایکل داره، بنابراین lifeCycle owner است.

میشه یه کلاسی را به عنوان observer برای اکتیویتی تعریف کرد که براساس state های مختلف عملیات متفاوتی انجام بده.

برای این کار باید dependency لایف سایکل رو در گریدل وارد کنیم:

def lifecycle_version = "2.2.0"
def arch_version = "2.1.0"
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"

 

حالا یک کلاس lifeCycle observer میسازیم:

public class MainActivityObserver implements LifecycleObserver {

    private static final String TAG = "MainActivityObserver";

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    public void onCreateCalled(){
        Log.d(TAG, "Observer: ON_CREATE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onStartCalled(){
        Log.d(TAG, "Observer: ON_START");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onResumeCalled(){
        Log.d(TAG, "Observer: ON_RESUME");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void onPauseCalled(){
        Log.d(TAG, "Observer: ON_PAUSE");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void onStopCalled(){
        Log.d(TAG, "Observer: ON_STOP");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    public void onDestroyCalled(){
        Log.d(TAG, "Observer: ON_DESTROY");
    }
}

 

این کلاس را به اکتیویتی معرفی میکنیم:

public class MainActivity extends AppCompatActivity {

    ActivityMainBinding activityMainBinding;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);

        Log.d(TAG, "Owner: onCreate");
        getLifecycle().addObserver(new MainActivityObserver());

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "Owner: onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "Owner: onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "Owner: onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "Owner: onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "Owner: onDestroy");
    }
}

اول متدهای اکتیویتی و سپس متدهای کلاس observer فراخونی میشه:

 

اینجا

موافقین ۰ مخالفین ۰ ۹۹/۱۱/۱۹
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی