Java 使用IntentService进行优先网络

Java 使用IntentService进行优先网络,java,android,service,android-intent,priority-queue,Java,Android,Service,Android Intent,Priority Queue,我一直在想,是否可以使用IntentService进行一些联网,同时保持待处理意图队列的优先级。我的目标是能够在后台下载一些图像,在需要时添加更多图像(发送另一个Intent),并能够在必要时重置队列(最好使用特定的Intent)。使用IntentServie时,这一切都是可能的,但当我发送“stop”Intent时,它需要作为队列中的下一个项目进行处理,而不是现在所在的最后一个项目 编辑 对于那些感兴趣的人,我采用了IntentService的AOSP代码,并对其进行了修改以满足我的需要。我不

我一直在想,是否可以使用
IntentService
进行一些联网,同时保持待处理意图队列的优先级。我的目标是能够在后台下载一些图像,在需要时添加更多图像(发送另一个
Intent
),并能够在必要时重置队列(最好使用特定的Intent)。使用
IntentServie
时,这一切都是可能的,但当我发送“stop”
Intent
时,它需要作为队列中的下一个项目进行处理,而不是现在所在的最后一个项目

编辑

对于那些感兴趣的人,我采用了
IntentService
的AOSP代码,并对其进行了修改以满足我的需要。我不能将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);    
            }

        }
此方法是从
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);
    }

总的来说,代码仍然有限,但我能够快速跟踪一些消息到队列的前端,这正是我所追求的。

您可以实现/扩展自己的PriorityQueue,只需检查添加到队列中的每个新意图。如果是停止意图,它会将其直接移动到行的前面。

PriorityQueue本身就是数据结构,但我需要的是IntentService,它使用PriorityQueue存储挂起的意图。如果我将子类化并重写相应的方法,这可能是可能的。是时候仔细研究一下Android的一些源代码了。。。