gpt4 book ai didi

java - Android IntentService 减慢 UI 线程速度

转载 作者:行者123 更新时间:2023-12-02 02:55:55 25 4
gpt4 key购买 nike

我的 IntentService 在 LogCat 中引发“跳过了 XX 帧!应用程序可能在其主线程上做了太多工作。” 消息,但我不明白为什么。

我正在开发一个与 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,因为辛苦的工作已经在不同的线程上运行了(解释为什么它实际上作为服务运行良好)。不过,我不明白为什么 IntentService 使 UI 线程跳帧。

最佳答案

Android IntentService slowing down UI Thread

不可能,正如您所知,IntentService 创建一个工作线程并使用该线程来运行服务。所以问题应该出在其他地方。

关于java - Android IntentService 减慢 UI 线程速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43075668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com