应用后台唤醒后数据的刷新

1. 如何判断程序是否是在后台运行了

/**
 * 判断当前的应用程序是否在后台运行,使用该程序需要声明权限android.permission.GET_TASKS
 * @param context Context
 * @return true表示当前应用程序在后台运行。false为在前台运行
 */
public static boolean isApplicationBroughtToBackground(Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (tasks != null && !tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            return true;
        }
    }
    return false;
}
  1. 在Activity中的onStop方法中去判断当前的应用程序是否在后台运行,同时用一个成员变量去记录该Activity是否为后台,在onResume方法中去判断记录程序后台的变量是否为true,如为true就说明现在是程序从后台切换到前台了,这时候就要去刷新数据了
 /**
     * 用于记录当前应用程序是否在后台运行,这样只作用于一个Activity,如果想让所有的
     * Activity都知道程序从后台到前台了,这时候要弄一个基类BaseActivity了,在
     * BaseActivity中去执行这些代码,让其他的Activity都继承该BaseActivity。并且要将
     * isApplicationBroughtToBackground变成static的。
     * 然后在onResume方法中不要执行isApplicationBroughtToBackground = false;这样其他
     * Activity在onResume方法中判断时就知道应用是从后台切换到前台的了,不用担心这样会导
     * 致isApplicationBroughtToBackground无法恢复为false,因为在onStop方法中,我们
     * 判断了如果现在程序不是后台,就将isApplicationBroughtToBackground 变为false了
     */
    private boolean isApplicationBroughtToBackground;

    @Override
    protected void onStop() {
        super.onStop();
        if(isApplicationBroughtToBackground(this)) {
            //程序后台了
            LogUtil.i(TAG, "后台了...");
            isApplicationBroughtToBackground = true;
        }else {
            LogUtil.i(TAG, "木有后台");
            isApplicationBroughtToBackground = false;
        }

    }

    protected void onResume() {
        super.onResume();
        if(isApplicationBroughtToBackground) {
            //从后台切换到前台了
            LogUtil.i(TAG, "从后台切换到前台了,刷新数据");
            loadFocusInfoData();
        }
        isApplicationBroughtToBackground = false;
    };
时间: 2024-10-17 01:38:30

应用后台唤醒后数据的刷新的相关文章

使用sessionStorage解决vuex在页面刷新后数据被清除的问题

https://www.jb51.net/article/138218.htm 1.原因 2.解决方法 localStorage没有时间期限,除非将它移除,sessionStorage即会话,当浏览器关闭时会话结束,有时间期限,具有自行百度 我这里使用sessionStorage,这里需要注意的是vuex中的变量是响应式的,而sessionStorage不是,当你改变vuex中的状态,组件会检测到改变,而sessionStorage就不会了,页面要重新刷新才可以看到改变,所以应让vuex中的状态

jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表

对于问题从后台获取json数据,将内容填充到下拉列表,代码非常简单,具体过程请看下面代码. 需求:url:链接     par:ID       sel:下拉列表选择器 function BuildSelectBox(url, par, sel) {  $(sel).empty();  $.getJSON(url, { id: par }, function (json, textStatus) {   for (var i = json.length - 1; i >= 0; i--) {  

使用EF生成数据模型,然后在数据库直接修改数据,前台刷新以后数据没有改变

sl5+wcf ria +ef 初学者水平 在sqlserver手动修改了数据库的数据以后,再到前台去刷新数据,发现数据没有变化,服务端返回和前台不一致 服务端代码 public IQueryable<Customer> GetCustomerByCustomerId(string customerId) { return this.ObjectContext.Customer.Where(e => e.CustomId == customerId); } 客户端更新按钮代码 priva

smartwizard 点击提交按钮后界面被刷新

项目中用到了smartwizard,对用户的入网配置进行了分步操作 这个插件给的范例中除了提供上一步下一步之外, 还可以添加其他的按钮 我这边额外添加了两个按钮,分别是提交和关闭 点击提交按钮时,异步向后台提交数据,步骤配置代码如下: $('#smartwizard').smartWizard({ selected: 0, theme: 'dots', cycleStep: false, transitionEffect:'fade', keyNavigation: false, showSte

移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片压缩,然后再把压缩后的图片上传到服务器. 一翻google之后,发现了localResizeIMG,它会对图片进行压缩成你指定宽度及质量度并转换成base64图片格式,那么我们就可以把这个base64通过ajax传到后台,再进行保存,先压缩后上传的目的就达到了. 处理过程 LocalResizeIM

application/x-www-form-urlencoded multipart/form-data text/plain 后台返回的数据响应的格式类型

application/x-www-form-urlencoded multipart/form-data text/plain 为什么上传文件的表单里要加个属性 enctype  后台返回的数据响应的格式类型 上传文件的表单中<form>要加属性enctype="multipart/form-data",很多人只是死记硬背知道上传表单要这么 写,知其然而不知其所以然.那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写encty

Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据

1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 点睛:进入登录页面的请求和提交登录信息的请求使用的路径都是一样的,只不过前往登录页面的请求是GET请求,服务器返回的是一个静态的页面:当录入登录信息点击确定后就会向后台发送一个POST请求,后台经过逻辑处理后,如果登录信息正确就会返回一个静态主页面(注意:虽然这两个请求都是使用的一样的路径,但是我

怎么实现form表单提交后不重新刷新当前页面

怎么实现表单提交后不重新刷新当前页面 如何实现表单提交后不重新刷新当前页面 <form name='form1' id='form1' action='/xbcw/cw/xx_xx.action' method='post'> <input type="button" id="btnSubmit" name="btnSubmit" value="保存" onclick="addKp()"

使用WakeLock使Android应用程序保持后台唤醒

使用WakeLock使Android应用程序保持后台唤醒 - Ryan's zone - 博客频道 - CSDN.NET 在使用一些产品列如微信.QQ之类的,如果有新消息来时,手机屏幕即使在锁屏状态下也会亮起并提示声音,这时用户就知道有新消息来临了.但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,Android系统中CPU会保持在一个相对较低的功耗状态.针对前面的例子,收到新消息必定有网络请求,而网络请求是消耗CPU的操作,那么如