win10 uwp 应用转后台清理内存
我在写小说阅读器,把每个打开的文件的内容读到内存,因为小说都很小,所以放在内存不怕太大,但是我如果打开了一本小说,再打开一本,我不会把先打开的小说的内容清除掉,在内存。所以一旦我打开多小说的时候,内存就会用比较多,这样觉得不好,不过垃圾wr给我们一个事件,这个我会在下面说。
我们很多应用会在前台用很多资源,例如我们的界面,在转入后台可以清理很多资源,如果判断用户不是马上就转回的,我们可以用新的EnteredBackground使用简单。在我的小说里面有写,我来看看我是怎么写。
在我们的App()
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
EnteredBackground += App_EnteredBackground;
LeavingBackground += App_LeavingBackground;
}
private void App_LeavingBackground(object sender, LeavingBackgroundEventArgs e)
{
//应用离开后台
_areBackground = false;
}
private void App_EnteredBackground(object sender, EnteredBackgroundEventArgs e)
{
//应用进入后台
_areBackground = true;
}
private bool _areBackground;
如果你应用没有EnteredBackground ,更新sdk 14393
如果安装了,可以修改你的文件<TargetPlatformVersion>10.0.14393.0</TargetPlatformVersion>
我们判断在我们进入后台清理我们的内存,因为小说经常不是后台就不用,我们就把我们现在使用的小说打开,其他打开小说放在内存资源全删,很简单,但是我们看官方建议是不GC.Collect();
private void App_EnteredBackground(object sender, EnteredBackgroundEventArgs e)
{
//应用进入后台
_areBackground = true;
//清理
var account = AccountGoverment.View.Account;//我们把所有的用户的放在用户管理
if (account != null)
{//我们把我们现在打开的小说除掉,其他都清空
foreach (var temp in account.File.Where(temp => temp != AccountGoverment.View.File))
{
//AccountGoverment.View.File我们打开的小说
//account.File 所有小说
temp.Str = null;
//我们会在加载的时候,点击小说,EaddressModel.Read()
}
}
}
我们对于内存,还有在我们使用缓存,判断我们应用使用内存,垃圾wr给我们两个事件,需要我们用sdk 14393,我觉得垃圾wr这样不好,才半年就改
MemoryManager给我们几个属性,AppMemoryUsage 获取应用程序当前的内存使用率, AppMemoryUsageLevel 获取应用程序当前的内存使用率级别,AppMemoryUsageLimit 获取应用程序当前的内存使用率限制,都是只读,我们可以获取这些值来得到我们应用是不是占用太多内存。
AppMemoryUsageLimitChanging应用限制最大内存,在我们应用转入后台,我们的内存限制就会变化,然而还有很多诡异的也会让我们内存限制变化,我们可以根据内存变化,清理缓存
AppMemoryUsageIncreased我们在我们开始缓存需要我们的内存应用等级,这个事件是内存使用等级,假如我们的内存等级从小到大,那么发生,一旦发生我们就要检查我们是否清理
AppMemoryUsageDecreased我们应用内存等级下降,在我们使用内存从大到小使用,这个在我们清理很多缓存可以让我们知道不用清理,一般用是在AppMemoryUsageIncreased 有个任务CleanTask,把我们的缓存清理,然后我们有个bool,一旦AppMemoryUsageDecreased我们就设为true,那么我们的CleanTask判断true就停下。
源代码:https://github.com/lindexi/NovelRead

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
win10 uwp 应用转后台清理内存的更多相关文章
- 2019-9-2-win10-uwp-应用转后台清理内存
title author date CreateTime categories win10 uwp 应用转后台清理内存 lindexi 2019-09-02 12:57:38 +0800 2018-2 ...
- Win10/UWP开发—使用Cortana语音与App后台Service交互
上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...
- Win10 UWP开发实现Bing翻译
微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...
- win10 uwp MVVM 轻量框架
如果在开发过程,遇到多个页面之间,需要传输信息,那么可能遇到设计的问题.如果因为一个页面内包含多个子页面和多个子页面之间的通信问题找不到一个好的解决方法,那么请看本文.如果因为ViewModel代码越 ...
- win10 uwp DataContext
本文告诉大家DataContext的多种绑法. 适合于WPF的绑定和UWP的绑定. 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用.当然,可以在新手面前秀下,一个页面 ...
- win10 uwp 渲染原理 DirectComposition 渲染
本文来告诉大家一个新的技术DirectComposition,在 win7 之后(实际上是 vista),微软正在考虑一个新的渲染机制 在 Windows Vista 就引入了一个服务,桌面窗口管理器 ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...
- 【Win10 UWP】后台任务与动态磁贴
动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...
随机推荐
- 201521123037 《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123059 《Java程序设计》第十四周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.关系型数据库 --建立表格时表中一列中的数据类型必须一致.关系表中的行必须是唯一的,列是不可分的,某些行的某 ...
- 多线程面试题系列(2): CreateThread与_beginthreadex本质区别
本文将带领你与多线程作第一次亲密接触,并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beg ...
- Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式
一.概述 在做项目的过程中,处理编辑区的保存机制的时候.发现,同样是扩展eclipse 自带的保存和全部保存按钮时候,rcp 工程下,保存按钮可以正常的灰显和可用,但是rap 的按钮就是始终呈现灰显的 ...
- 命令导入导出oracle库
目前还是新手:所以记录下来最笨的方式,留用 一.从服务器先把库导出来 exp sys/mima@orcl file = "d:\pybghs.dmp" full=y 二.从服 ...
- spring mvc 经常出现的错误
spring mvc 经常出现的错误 spring3.0 和jdk 1.8不是很兼容.有时候会出现一些错误 建议使用spring 4.0和jdk1.8搭配使用 书籍 spring mvc 学习指南上面 ...
- java 使用redis 数据库
[TOC] java 使用redis 数据库 连接redis package com.wsc.redis.Test1; import java.util.List; import java.util. ...
- node 当中的 cnpm和npm 的区别和使用
在安装nodejs之后会有npm命令 打开命令符输入之后 输入node -v(记得-v前空格)查看版本信息 如果显示出来了就说明安装成功 然后 npm 可以安装node插件 cnpm使用的是淘宝网 ...
- 使用node.js检查js语法错误
如果没有一些工具和插件写JavaScript代码遇到语法错误找起来很费时间,请教了同事怎么用node.js检查 用浏览器测试的时候报语法错误. 1.点击红圈中的蓝色按钮,下次刷新是会在抛出异常的时候自 ...
- 实例讲解js正则表达式的使用
前言:正则表达式(regular expression)反反复复学了多次,学了又忘,忘了又学,这次打算把基本的东西都整理出来,加强记忆,也方便下次查询. 学习正则表达式之前首先需要掌握记忆这些基本概念 ...