تا به حال شاید با روش های مختلف ارتباط بین اکتیویتی و کلاس های مختلف آشنا شده باشید توی این مقاله سعی دارم بهتون نحوه ارتباط بین بخش های مختلف رو با استفاده از event bus آموزش بدم.
ایونت باس ها زمانی که یک پروسه به طور کامل انجام میشه ،به اکتیویتی و یا فرگمنت مورد نظر اطلاع میده.
در استفاده از ایونت باس باید به چندتا نکته توجه بکنید:
نحوه استفاده
اول از همه کتابخونه رو اضافه میکنیم:
dependencies { implementation 'org.greenrobot:eventbus:3.0.0' }
در مرحله بعد باید لایف سایکل اون رو مشخص کنید.
public class MainActivity extends AppCompatActivity { @Override protected void () { super.(); EventBus.getDefault().unregister(this); } @Override protected void () { super.(); EventBus.getDefault().register(this); }
حالا یه مدل میسازیم، داخل مدل هر چیزی که نیاز داشته باشیم رو قرار میدیم.ما اینجا یه مدل ساختیم که شامل یه مقدار به عنوان وضعیت و یک مقدار پیام هست .
public class IntentServiceResult { String mResult; String mResultValue; IntentServiceResult(String resultCode, String resultValue) { mResult = resultCode; mResultValue = resultValue; } public String getResult() { return mResult; } public String getResultValue() { return mResultValue; }
بعد از اون میرسیم به پابلیش کردن ایونت.که ما یه مقدار ok به عنوان نتیجه و یه پیام رو میفرستیم.ما میتونیم هرجایی که نیاز باشه اینکار رو انجام بدیم به طور مثال در ریسپانس درخواست ما به سرور .
// do some work EventBus.getDefault().post(new IntentServiceResult("ok", "done!!"));
ما کد هایی که الان بهتون میگم رو توی اکتیویتی مورد نظر مینویسیم که هر زمان که ایونت پابلیش شد صدا زده بشه.
public class MainActivity extends AppCompatActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void doThis(IntentServiceResult intentServiceResult) { Toast.makeText(this, intentServiceResult.getResultValue(), Toast.LENGTH_SHORT).show(); }
امیدوارم این آموزش براتون مفید واقع شده باشه در ادامه آموزش های بیشتری رو براتون میزارم.