Android Widget强制RemoteView清除缓存?

时间:2011-07-12 02:30:00

标签: android android-widget

我正在开发一个小部件,其中纵向和横向布局分别保存在/ layout和/ layout-land中。每个布局文件的名称相同,但已根据其方向差异进行了格式更改。

当我在其中一个方向上启动一个小部件并将其保留在那里时,它工作正常......但是当我切换方向时,整个布局变得混乱。

现在,在搜索网页后,我发现Android系统从缓存中加载了最新的RemoteView。 Aka,如果我在横向上启动它的小部件,则在更改oritentation时会缓存并使用横向布局。

我已经尝试了一切我能想到的东西来阻止这种情况发生,但无济于事。 有谁知道是否可以清除Android RemoteView缓存并强制它加载更正后的布局?

由于

编辑:

我找到了一个解决方案,虽然有点hacky ......

我创建了一个“包装器”布局,其中只有一个带有ID的LinearLayout,然后创建了子布局,其中横向版本在名称的末尾有一个_land。

在onUpdate方法和更新窗口小部件的服务中,我检查屏幕的方向,然后以编程方式选择_land或非_land版本,并将其添加到包装器布局。

我无法相信谷歌不会让这更容易做到,而且令人难以置信的是,我不得不强迫这样的编程行为出于使用XML配置看起来很自然的事情。

1 个答案:

答案 0 :(得分:0)

您可能需要使用layout-landlayout-port作为目录(而不是layoutlayout-land)才能使其正常运行。