پریسا جدیدی
پریسا جدیدی
خواندن ۲ دقیقه·۴ سال پیش

برقراری ارتباط با استفاده از event bus

event bus
event bus

تا به حال شاید با روش های مختلف ارتباط بین اکتیویتی و کلاس های مختلف آشنا شده باشید توی این مقاله سعی دارم بهتون نحوه ارتباط بین بخش های مختلف رو با استفاده از event bus آموزش بدم.

ایونت باس ها زمانی که یک پروسه به طور کامل انجام میشه ،به اکتیویتی و یا فرگمنت مورد نظر اطلاع میده.

در استفاده از ایونت باس باید به چندتا نکته توجه بکنید:

  • اگر در برنامه چندین ایونت باس داشته باشیم وقتی یکی از اون ها پابلیش میشه نباید باعث ایجاد تغییر در بقیه ایونت باس ها بشه
  • اگر در یک اکتیویتی و یا یک فرگمنت subscribe کرده باشید باید حتما در لایف سایکل اکتیویتی و یا فرگمنت unregistered کنید تا دچار memory leaks و کرش اپ نشید.
  • حتما به این نکته توجه کنید اگه میخواید در فرگمنت subscribe کنید باید حتما فرگمنت مورد نظر ران باشه.به طور مثال برای ارسال یک پیام از یک فرگمنت به یک فرگمنت دیگه که الان ران نیست امکان پذیر نخواهد بود .

نحوه استفاده

اول از همه کتابخونه رو اضافه میکنیم:

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(&quotok&quot, &quotdone!!&quot));

ما کد هایی که الان بهتون میگم رو توی اکتیویتی مورد نظر مینویسیم که هر زمان که ایونت پابلیش شد صدا زده بشه.

public class MainActivity extends AppCompatActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void doThis(IntentServiceResult intentServiceResult) { Toast.makeText(this, intentServiceResult.getResultValue(), Toast.LENGTH_SHORT).show(); }

امیدوارم این آموزش براتون مفید واقع شده باشه در ادامه آموزش های بیشتری رو براتون میزارم.







eventbusایونت باسآموزش اندرویدآموزش مقدماتی اندرویدآموزش جاوا
Android Developer
شاید از این پست‌ها خوشتان بیاید