一直以为都在纳闷,为啥我的其他app崩溃次数几乎为0,而单单这个App的崩溃次数简直逆天了,我都不敢相信。

每天都有至少上千次crash。。。我也是服的

不甘心,趁着这次重构的机会,把代码好好捋了1下

  1. Debug.WriteLine("BeginRequest " + DateTime.Now);
  2. progressRing.Visibility = Visibility.Visible;
  3. progressRing.IsActive = true;
  4.  
  5. var repsonse = await HttpHelper.GetJsonAsync<USGSEarthquakesModel>(strRequestUrl);
  6. if (repsonse != null && repsonse.metadata.status == )
  7. {
  8. Debug.WriteLine("EndRequest " + DateTime.Now);
  9. Debug.WriteLine("BeginxBind " + DateTime.Now);
  10. Debug.WriteLine("Count " + repsonse.metadata.count);
  11. ObsList.Clear();
  12. if (repsonse.metadata.count > )
  13. {
  14. foreach (FeaturesItem em in repsonse.features)
  15. {
  16. if (em.properties.mag == null)
  17. continue;
  18.  
  19. try
  20. {
  21. StandardEarthquakesModel sm = new StandardEarthquakesModel
  22. {
  23. Time = Helpers.TimeConverter.Convert2MyTime(em.properties.time),
  24. Mag = (double)em.properties.mag,
  25. Latitude = (double)em.geometry.coordinates[],
  26. Longitude = (double)em.geometry.coordinates[],
  27. Depth = (double)em.geometry.coordinates[],
  28. Location = em.properties.place,
  29. };
  30. ObsList.Add(sm);
  31. }
  32. catch { }
  33. }
  34.  
  35. PullToRefreshListViewControl.ItemsSource = ObsList;
  36. (Application.Current as App).gObsEarthquakeList = ObsList;
  37. TipServices.TipUpdateData((int)repsonse.metadata.count);
  38.  
  39. Debug.WriteLine("EndxBind " + DateTime.Now);
  40. }
  41. else
  42. {
  43. TipServices.TipNoData();
  44. }
  45. }
  46. else
  47. {
  48. TipServices.TipNetError();
  49. }
  50.  
  51. progressRing.Visibility = Visibility.Collapsed;
  52. progressRing.IsActive = false;

看获取json,看绑定,看数据模型,貌似都没啥问题啊。

于是就把代码分块注释掉,看看哪一部分有bug。

首先注释掉response之后代码,可以确定获取response没猫饼。

难道try catch有问题?

排除。。。

接着就是

  1. PullToRefreshListViewControl.ItemsSource = ObsList;

有问题???

其他app也是这么写的啊。。。

注释一番后,最终确定

  1. TipServices.TipUpdateData((int)repsonse.metadata.count);

真的有问题。

进去看看

  1. public static void TipUpdateData(int nCount)
  2. {
  3. if (notifyPopup != null)
  4. notifyPopup.Hide();
  5. if (strCurrentLanguage.ToLower().Equals("zh-cn"))
  6. notifyPopup = new NotifyPopup(LanguageHelper.strTipDataUpdatedAmount_zh_cn + nCount);
  7. else
  8. notifyPopup = new NotifyPopup(nCount + LanguageHelper.strTipDataUpdatedAmount_en);
  9. notifyPopup.Show();
  10.  
  11. SoundHelper.PlaySucceedTipSound();
  12. }

这个类似安卓toast,其他app用过无数次,怎么会有bug???

那基本可以确定

  1. SoundHelper.PlaySucceedTipSound();

这句话挂了。

  1. private static public static void PlaySucceedTipSound()
  2. {
  1.   MediaPlayer mediaPlayer = new MediaPlayer();
  1.   mediaPlayer.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/Skype.wav"));
      mediaPlayer.Play();
    }

把MediaPlayer拿出来设置成静态,

UWP 自然灾害App在刷新数据后卡死的解决方案的更多相关文章

  1. POI刷新数据后的函数(公式)更新问题

    使用POI将Excel模板中的数据进行更新,这应该是很常见的操作 下面就贴上我的一小段代码 public class ModifyExcel { /** * @param fileName Excel ...

  2. pymysql 读取大数据内存卡死的解决方案

    背景:目前表中只有5G(后期持续增长),但是其中一个字段(以下称为detail字段)存了2M(不一定2M,部分为0,平均下来就是2M),字段中存的是一个数组,数组中存N个json数据.这个字段如下: ...

  3. Adapter刷新数据的坑

    adapter刷新数据的时候,要能够刷新成功,要保证每次刷新的时候都是改变数据源. 于是,我这样做了,在适配器的构造方法里面写到: private List<ListBean> listI ...

  4. DataGridView重新加载数据后,选中上次选中的行。

    public int SelecedRow;//记录当前鼠标点中的行索引(用于解决用户获取看板数据,刷新数据后,当前选中行回到默认行) private void dataGridView1_CellC ...

  5. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...

  6. js实现非模态窗口增加数据后刷新父窗口数据

    父窗口是由两个部分组成,一个html的table,一部分是extjs的gird. 点击grid面板[增加]按钮将会弹出非模态窗口进行新数据的编辑页面 下面是按钮的触发函数代码: var a = win ...

  7. Ajax请求数据与删除数据后刷新页面

    1.ajax异步请求数据后填入模态框 请求数据的按钮(HTML) <a class="queryA" href="javascript:void(0)" ...

  8. IDEA 修改JSP和后端数据后,页面刷新可以实时更新

    情况:刚开始使用IDEA进行开发时,发现修改JSP页面或者后端数据后,再刷新浏览器页面,发现没有变化,页面无更新. 这样就导致不得不频繁重启tomcat服务器.非常麻烦 解决方法: 步骤1. 先设置t ...

  9. 解决Vuex持久化插件-在F5刷新页面后数据不见的问题

    页面刷新后,想保存页面未保存的数据.我们总是习惯于放在浏览器的sessionStorage和localStorage中.但是用了vue后,vuex便可以被应用了. vuex优势:相比sessionSt ...

随机推荐

  1. handsontable 和 echarts都定义了require方法,初始化时冲突了,怎么办?

    echarts初始化时报这个错误. require.config is not a function  方案一: 让其中一方的初始化不依赖于 require即可 1.去掉 var testDrowEc ...

  2. 超强IIS站点工具一键设置PHP,支持多个PHP同时运行

    PHPWAMP8.8.8.8IN支持三大主流Web服务器:iis.apache.nginx NGINX站点管理.IIS站点管理.Apache站点管理均支持php多版本同时运行,无限自定义mysql.p ...

  3. elif 相当于else&if

    if  条件: 语句块 elif 条件: 语句块 ... else                      #elif好像要有一个else作为结尾

  4. CSS 鼠标样式

    设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置. cursor属性可能的值: default 默认光标(通常是一个箭头) auto 默认.浏览器设置的( ...

  5. python第二十课——math模块中常用的函数

    属性: e:自然数 pi:圆周率 函数: ceil():向上取整 floor():向下取整 sqrt():开平方根 radians():角度转弧度 degrees():弧度转角度 import mat ...

  6. python第九课——while死循环

    2.3.无限循环/死循环: 何时发生无限循环? 循环条件永远为True,就出现了无限循环 [注意] 无限循环是需要避免的,因为它极其占用系统资源: 但是配合我们之后讲的break等关键字,就会变得更有 ...

  7. 【bzoj 4710】 [Jsoi2011]分特产

    题目 容斥加组合计数 显然答案是 \[\sum_{i=0}^n(-1)^i\binom{n}{i}f_{n-i}\] \(f_i\)表示至多有\(i\)个人没有拿到特产 考虑求\(f\) 发现\(m\ ...

  8. 【bzoj 2839】集合计数

    权限题 根据广义容斥的套路就很好做了 设\(g_i\)表示交集至少有\(i\)个元素,\(f_i\)表示交集恰好有\(i\)个元素 显然有 \[g_i=\sum_{j=i}^n\binom{j}{i} ...

  9. 【洛谷】【线段树】P3353 在你窗外闪耀的星星

    [题目描述:] /* 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀 ...

  10. Core WebAPI 入门

    官方文档地址 https://docs.microsoft.com/zh-cn/aspnet/?view=aspnetcore-2.2#pivot=core 使用 ASP.NET Core 构建 We ...