У меня есть IntentService, который запускается, когда SplashActivity onCreate вызывает:
class SplashActivity : AppCompatActivity() {
private val handler = Handler(Looper.getMainLooper())
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
startService(Intent(applicationContext, ContactsService::class.java))
handler.postDelayed({
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
}, SPLASH_DELAY.toLong())
}
}
private const val SPLASH_DELAY = 1500
Вот мой IntentService:
override fun onHandleIntent(intent: Intent?) {
val cursor = ContactUtil.getContactsCursor(null, null, this)
val contacts = ContactUtil.getContacts(cursor, this)
cursor?.close()
val contactsIntent = Intent(CONTACTS_RECEIVER)
contactsIntent.putParcelableArrayListExtra(CONTACTS, ArrayList<Parcelable>(contacts))
sendBroadcast(contactsIntent)
}
1 - Если у меня огромное количество контактов, мой broadcastReceiver onReceive
метод вызывается после создания фрагмента, что нормально.
2 - Если у меня есть несколько фрагментов, onReceive
метод вызывается до создания фрагмента, который вообще не обновляет мой пользовательский интерфейс.
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
List<Contact> contacts = intent.getParcelableArrayListExtra(CONTACTS);
mContacts = contacts;
mAdapter.setItems(contacts, true);
mProgressBar.setVisibility(View.GONE);
mAppBarLayout.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.VISIBLE);
}
};
Какое решение для второго случая?