【问题标题】:High CPU Usage Windows Phone 8 - SystemManaged Function高 CPU 使用率 Windows Phone 8 - SystemManaged 功能
【发布时间】:2013-05-02 15:58:40
【问题描述】:

我目前正在我的 WP8 应用上使用 Store TestKit。

我有一个枢轴。一个 PivotItem 有几个元素,比如一个 TextBox,它绑定到我的 ViewModel (MVVM-Pattern)。无论如何,当我点击一个在 UI 中安静下来的 TextBox 时,动画并不流畅。

Store TestKit 中的错误是“由于 CPU 绑定动画导致帧速率低” 我所有的方法都使用最大值。 20% cpu,但这个需要 ~80%:

(Systemeigene Funktion = 系统管理功能

Stichprobe = 样本)

如何降低价值?因为它不是我创建的函数,所以我不能使用线程。我看过这个帖子http://www.expressionblend.com/articles/2012/03/23/wp7-performance-tip-translate-transforms/。它描述了我的问题,但没有给出解决方案。

这是我的 ViewModel 中的属性的样子:

private string _myval;
public string MyVal
{
    get { return _myval; }
    set
    {
        _myval = value;
        RaisePropertyChanged(() => MyVal);
    }
}

但是属性不是问题...

【问题讨论】:

  • 如果您实际发布有性能问题的代码,它会有所帮助。 当然,您链接到的文章确实提供了解决方案。
  • 是的,他有一个解决方案,但我不知道如何在我的项目中使用他的解决方案(或者他的解决方案是否可以解决我的问题......)。正如我所说,它是一个系统函数(见上图),所以我没有使用实际代码。我只有一个带有多个元素的 Pivot,它们绑定到 ViewModel 中的一个属性。
  • 您是否尝试从属性中删除RaisePropertyChanged(() => MyVal);?看起来这条线应该存在于财产之外。
  • 还是一样。即使我完全删除 Binding 并像这样定义文本框: ,UI 更改(Pivot 和所有向上的元素)仍然不流畅/平滑......它是“生涩的”。
  • 你有像我假设的文章作者那样的动画吗?我不想重复自己,但这篇文章的解决方案似乎直截了当。使用 TranslateTransform 会导致 UI 更新由 GUI 完成,并且 UI 线程专用于它。

标签: c# performance memory-management windows-phone-8


【解决方案1】:

好的哇,这个人的文章很棒:

http://fiercedesign.wordpress.com/2012/08/14/windows-phone-performance-best-practices/

阅读主题“重绘区域”

如果 UI 不流畅/流畅,您必须检查 UI 每次都重绘了哪些元素。您可以通过转到 App.xaml.cs 并启用重绘区域来做到这一点

Application.Current.Host.Settings.EnableRedrawRegions = true;

如果某个区域或元素闪烁,则说明有问题。尝试添加

CacheMode="BitmapCache"

到你的元素。

我的应用中有很多颜色闪烁。 UI 重新绘制,即我的 TextBlocks,即使我没有更改它。我所要做的就是像这样更改所有元素(尤其是 TextBlocks 和 Grids):

<TextBlock CacheMode="BitmapCache"/>

应用程序现在运行流畅。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多