1
我一直在想,如果可以使用IntentService
來做一些聯網,同時保持未決意圖隊列的優先級。我的目標是能夠在後臺下載一些圖像,如果需要添加更多圖像(發送另一個Intent
),並且能夠在必要時重置隊列(最好使用特定的意圖)。這是所有可能的IntentServie
,但是當我發送'停止'Intent
它需要作爲隊列中的下一個項目進行處理,而不是現在的最後一個。使用IntentService進行優先化聯網
編輯
對於那些有興趣我已經採取了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);
}
}
這種方法是從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。如果我要繼承並覆蓋相應的方法,可能是可能的。儘管可以挖掘一些Android的源代碼 – smith324 2010-08-24 05:15:57