代码之家  ›  专栏  ›  技术社区  ›  smith324

使用IntentService进行优先网络

  •  1
  • smith324  · 技术社区  · 14 年前

    IntentService 进行一些联网,同时保持等待的意图队列的优先级。我的目标是能够在后台下载一些图片,如果需要添加更多(发送另一个) Intent )并且能够在必要时重置队列(最好使用特定的意图)。这一切都是可能的 IntentServie 但当我发出“停止” 意图

    编辑

    对于那些感兴趣的人,我已经把AOSP代码 内部服务 ServiceHandler 类内部 IntentHandler .

    服务处理程序 我有一个新方法:

     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);
        }
    

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   mtmurdock    14 年前

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