Использование IntentService для создания приоритетных сетей - PullRequest
1 голос
/ 24 августа 2010

Мне было интересно, можно ли использовать IntentService для создания сетей, сохраняя приоритет очередей ожидающих намерений.Моя цель - иметь возможность загружать некоторые изображения в фоновом режиме, добавлять больше при необходимости (отправить еще Intent) и иметь возможность сбрасывать очередь при необходимости (желательно с определенным намерением).Это все возможно с IntentServie, но когда я отправляю этот «стоп» Intent, он должен обрабатываться как следующий элемент в очереди, а не как последний, где он сейчас находится.

EDIT

Для тех, кто заинтересован, я взял код AOSP для IntentService и изменил его в соответствии со своими потребностями.Причина, по которой я не могу просто создать подкласс IntentHandler, заключается в том, что внутри IntentHandler.

внутри закрытого ServiceHandler класса. Внутри ServiceHandler у меня есть новый метод:

 public final boolean sendPriorityMessage(Message msg)
        {
            int priority = msg.arg2;
            //Log.i(GenericList.TAG,"recieved message priority: "+priority);


            if(priority>PRIORITY_NORMAL){
                return sendMessageAtFrontOfQueue(msg);
            }else{
                return sendMessage(msg);    
            }

        }

Thisметод вызывается из onStart вместо просто sendMessage

 @Override
    public void onStart(Intent intent, int startId) {
        Message msg = mServiceHandler.obtainMessage();
        msg.arg1 = startId;
        msg.obj = intent;
        try{
            msg.arg2 = intent.getExtras().getInt(KEY_PRIORITY);
        }catch(Exception e){
            msg.arg2 = PRIORITY_NORMAL;
        }

        mServiceHandler.sendPriorityMessage(msg);
    }

В целом код по-прежнему ограничен, но я могу быстро отследить некоторые сообщения в начале очереди, что и было послев любом случае.

1 Ответ

0 голосов
/ 24 августа 2010

вы можете реализовать / расширить свой собственный PriorityQueue, который просто проверяет каждое новое намерение, добавленное в очередь. если это намерение остановки, оно перемещает его прямо к началу строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...