android 两个service刷新同一个widget的不同部分

我在做一个桌面的天气widget,这个widget包含两部分,天气和时间,这两部分分别由两个service维护(因为时间部分要一分钟就刷新一次,所以不想把天气也一起刷新),问题就是在刚好两者同时刷新widget时,会出现一部分消失的情况,现在虽然加了同步锁,不允许同时刷新,但是依然会出现这个问题,请问有什么办法解决没。。。
2026年09月23日 15:56
有3个网友回答
网友(1):

你可以换个思路哇,1个service只维护天气数据,天气数据一旦变化将bool1改为true,不要去更新什么;第2个service只维护时间数据,时间一旦变化将bool2改为true;第3个service或者线程什么的,每个1秒钟去根据bool1和bool2获取天气数据和时间数据,有变化则更新widget,这样不好吗?

网友(2):

自定义天气widget的控件。 刷新的时候可以指定刷新控件的某个区域。如下:
刷新局部:invalidate(int l, int t, int r, int b) 四个参数分别为左、上、右、下
整个view刷新: invalidate()

网友(3):

自己下载个类似的app,看看别人是怎么弄的。