public class MediaPlayerService extends MediaBrowserServiceCompat
{
List items = new ArrayList();
Hander autoHandler = new Hander();
boolean dataReady;
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onLoadChildren(@NonNull String parentId, @NonNull Result result)
{
if (parentId == "getdata")
{
Runnable autoRunnable = new Runnable() {
public void run() {
if (dataReady) {
List mediaItems = new ArrayList(items.size());
for (Item items : items)
{
mediaItems.add(new MediaBrowserCompat.MediaItem(new MediaDescriptionCompat.Builder()
.setMediaId(String.valueOf(item.getId()))
.setMediaUri(Uri.parse(item.getMediaUrl().toString()))
.setTitle(item.getTitle()).build(), MediaBrowserCompat.MediaItem.FLAG_PLAYABLE));
}
result.sendResult(mediaItems);
} else {
autoHandler.postDelayed(this, 1000);
}
}
};
FetchData(); //populated items List and set `dataReady` when complete
result.detach();
autoHandler.post(mAutoDataReadyCheck);
}
}
}
При нажатии кнопки «Назад» onLoadChildren вызывается снова:
Нажатие кнопки «Назад» должно выглядеть следующим образом:
но вызов result.detach() нарушает функциональность "Сейчас исполняется":
У меня есть мультимедийное приложение Android Auto. При вызове result.detach() в существующем списке функция «Сейчас исполняется» не работает: [code]public class MediaPlayerService extends MediaBrowserServiceCompat {
List items = new ArrayList(); Hander autoHandler = new Hander(); boolean dataReady;
@Override public void onCreate() { super.onCreate(); }
@Override public void onLoadChildren(@NonNull String parentId, @NonNull Result result) { if (parentId == "getdata") { Runnable autoRunnable = new Runnable() { public void run() { if (dataReady) { List mediaItems = new ArrayList(items.size());