My IntentService正在提高「跳過了XX幀!應用程序可能在其主線程上做了太多工作。」 LogCat中的消息,但我不明白爲什麼。Android IntentService減慢UI線程
我正在開發一個與P2P代理進行通信的應用程序。我決定將所有的通信邏輯轉移到一個服務。起初,我做的事情以那種方式:
class MyService extends Service {
@Override
onCreate() {
// This info need to stay up as long as the context is
stablishEndpointAndTransport();
}
@Override
onStartCommand(Intent intent, int startId) {
registerAccountId(intent.getIntExtra(EXTRA_ACCOUNT_ID));
}
@Override
IBinder onBind(Intent intent) {
super.onBind(intent);
}
@Override
onDestroy() {
if (registeredAccount) deleteAccount();
deleteTransportAndEndpoint();
}
}
它跑好,即使我沒有創建工作線程來處理所有的邏輯。但是由於我需要實現更多的連接邏輯,因此我決定將邏輯移至IntentService,因爲它處理後臺工作線程上的所有內容。
我所做的只是基類重命名爲IntentService
,在onStartCommand()
方法的內容移動到onHandleIntent()
,指定動作不斷向特定情況和擦除onStartCommand()
和onBind()
覆蓋。
這種變化如何影響主線程的性能?
編輯
可能是相關的,但兩者stablishEndpointAndTransport()
和registerAccountId()
運行從框架中的一些方法是異步。具體來說,與經紀人溝通的方法是。話雖如此,我可能會放棄IntentService
,因爲辛苦工作已經在另一個線程上運行(請解釋爲什麼它實際上運行良好,爲Service
)。不過,我不明白爲什麼IntentService
正在製作UI線程跳過幀。
這不是一個IntentService。 IntentServices從IntentService擴展。這是一個正常的服務,並在UI線程上完成它的工作。 –
這是我變成了'IntentService'的'服務'。代碼片段中描述了不同之處。這實際上只是這一點。 –