gpt4 book ai didi

android - 当我在服务和 handler.post 方法中运行东西时,为什么我的 Activity 仍然滞后?

转载 作者:行者123 更新时间:2023-11-30 04:48:32 24 4
gpt4 key购买 nike

我很困惑为什么我的 Activity 仍然滞后,我使用的远程服务几乎没有方法,每个都有自己的工作,如下载东西、处理数据、比较东西等......它将在后台运行并更新数据在选定的时间间隔内通过通知系统通知用户更改。

远程服务的原因,因为我最终会添加一个小部件,服务需要保持运行,即使 android 杀死 Activity ,所以我在每个 onPause() 上解除绑定(bind)。但据我所知,这部分不会导致我的问题。

但是回到我的问题...所以当我在服务和 handler.post 方法中运行内容时,我的 Activity 仍然滞后。

代码如下:

public class WarnService extends Service {

private Bitmap pic;
private boolean dataUpToDate;

private void loadData(){
//code that downloads new data and sets the dataUpToDate variable
}

private void updateLayer(Bitmap bt){
//code that updates some stuff if downloaded and local data differ
}

private IWarnService.Stub WServiceStub = new IWarnService.Stub() {

@Override
public void refreshData() throws RemoteException {
serviceHandler.post(new Runnable() {

@Override
public void run() {
loadData();
if(!dataUpToDate){
updateLayer(pic);
}
}
});
}

}
}

我还想添加要在 updateLayer(...) 中更新的 progressDialog,通过 Activity 是此服务的监听器,但效果不佳。更新 progressDialog 的最佳方式是什么?曾经是倾听者、处理者、 Intent 或什么?

那么我该如何正确地做到这一点呢?

最佳答案

如果您的服务在后台进行一些繁重的处理,那么您的 Activity 可能仍会遇到一些延迟。尝试降低您在服务中使用的线程的优先级。我在我的一个项目中遇到了类似的问题,我尝试将我的后台线程的优先级设置为 PRIORITY_BACKGROUND(或者它是一个名称与此类似的常量),然后解决了它。

编辑:在这里您可以阅读有关线程优先级的信息:http://developer.android.com/reference/android/os/Process.html

关于android - 当我在服务和 handler.post 方法中运行东西时,为什么我的 Activity 仍然滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214462/

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