精华内容
下载资源
问答
  • 如何让程序在锁屏后还一直运行

    万次阅读 2017-08-15 11:25:18
    但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,android系统中CPU会保持在一个相对较低的功耗状态,但是上传位置信息需要网络请求来消耗CUP的。...

    最近在开发一款定位APP,需求是在时刻进行定位,及时锁屏后也需要保持定时上传位置信息。但是,一般情况下手机锁屏后,Android系统为了省电以及减少CPU消耗,在一段时间后会使系统进入休眠状态,这时,android系统中CPU会保持在一个相对较低的功耗状态,但是上传位置信息需要网络请求来消耗CUP的。此前我试了各种方法,websocket、轮询、前台Service效果都不理想,自从使用了Android中的WakeLock机制,我腰不酸了,腿不疼了,上传数据都有劲了!话不多说,来一起看看如果实现WakeLock机制。

        //获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行  
        private void acquireWakeLock()  
        {  
            if (null == wakeLock)  
            {  
                PowerManager pm = (PowerManager)this.getSystemService(Context.POWER_SERVICE);  
                wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE, "PostLocationService");  
                if (null != wakeLock)  
                {  
                    wakeLock.acquire();  
                }  
            }  
        }  
    
        //释放设备电源锁  
        private void releaseWakeLock()  
        {  
            if (null != wakeLock)  
            {  
                wakeLock.release();  
                wakeLock = null;  
            }  
        }  
    在程序第一次创建的时候调用acquireWakeLock方法,销毁的时候调用releaseWakeLock方法
    

    **各种锁的类型对CPU 、屏幕、键盘的影响:
    PARTIAL_WAKE_LOCK:保持CPU 运转,屏幕和键盘灯有可能是关闭的。
    SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
    SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
    FULL_WAKE_LOCK:保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度
    ACQUIRE_CAUSES_WAKEUP:强制使屏幕亮起,这种锁主要针对一些必须通知用户的操作.
    ON_AFTER_RELEASE:当锁被释放时,保持屏幕亮起一段时间**

    还要在AndroidManifest中添加权限

       <uses-permission android:name="android.permission.WAKE_LOCK"/>
        <uses-permission android:name="android.permission.DEVICE_POWER"/>

    如果大家有更好的方法,欢迎留言交流~

    展开全文
  • 本博主要就是分享如何让qt开发的android程序手机上运行,切换到后台的时候,程序仍然在一直运行,为什么这么做呢,因为我有需求是app连接蓝牙后,程序切换到后台,仍然能接受到蓝牙发送的数据并保存时间等信息,...

    本博主要就是分享如何让qt开发的android程序在手机上运行,切换到后台的时候,程序仍然在一直运行,为什么这么做呢,因为我有需求是app连接蓝牙后,程序切换到后台,仍然能接受到蓝牙发送的数据并保存时间等信息,但是在实际实验中发现,在app切换到后台后,定时器中的计数就停止了,说明锁屏或者切换后台程序处于低优先级状态,在打开程序后,定时器中的计数接着按home键之前的数,说明程序是没有被打死的,程序的内存还在,所以,问题就来了,如何让程序在后台持续运行,并且有消息能处理。看似简单的问题,实际操作起来很难,像一些程序,qq,微信,,,大公司的程序很轻而易举的就可以实现后台运行,但他们绝对不是用qt开发的,所以,我的目标就是用qt来实现这个功能,因为我不是搞安卓开发的,只是业余,玩玩而已,哈哈,正文开始:

     

    1.提高服务优先级:

    通常保活都离不开Server,一般情况下,播放**媒体播放**等服务会被系统授予较高的优先级,
    但是,如果该服务占用资源过高,还是容易被gc掉,所以这里我后台循环播放一段只有几十Kb的音量为0的音频。

    2.创建守护进程

    简单的说,就是创建2个以上的服务,服务之间相互唤醒
    具体做法就是在一个服务的**onDestory()**销毁时,发送一个广播给其他还活着的服务,
    活着的服务收到广播立即唤醒被回收的服务。
    这里注意,守护进程里面尽量少做事,少占内存。

    3.定时唤醒+持续占有(这个事情qq干过)

    • 监听一些系统广播,比如锁屏广播(因为现在很多高版本的Android系统会在系统锁屏时进入打盹模式,后台的很多东西容易被清理)
    • 收到锁屏广播后,创建一个只有1像素的页面。(页面其实是看不见的),提高进程优先级
    • 系统解锁后,移除这个1像素页面。

    https://blog.csdn.net/gf771115/article/details/77457053

     

    2019年5月19日01:28:55  脑壳疼,还没搞定,采用WakeLock方式,但是 

    一直失败,明天继续尝试,累死了睡觉

    2019年5月19日20:20:02

    搞不出来,很难受,在网上了解了几个方式,都想去尝试,但是有的方式能 尝试,无效果, 有的方式压根都不知道去如何尝试,技术差得远,愁人。

    想要尝试的几种方式:

    1.使用wakelock,使主线程持有锁,不会被挂起,直到程序退出才释放锁,不知道是不是这样用,反正没有效果

    2.使用 双线程,互相唤醒,我就是创建了一个子线程,但是不知道如何去实现两个线程之间互相唤醒

    3.创建service,让程序在后台之后,service保持运行,数据都在service内处理,这个service貌似在java中,创建一个定时器,

    然后把你想要处理的数据放在这里处理,那么问题来来,因为使用的是qt,只会qt调用java文件去执行一些Android原生的功能,不知道怎么把qt的程序内容发给java然后再去处理,这就很坑了。

    4.后台播放一段0音量的音频文件,提高程序的优先级,未实现。

    附上几个参考链接,希望对各位看官有所帮助:

    https://blog.csdn.net/ryantang03/article/details/8628753

    http://blog.chinaunix.net/uid-29355319-id-4491428.html

    https://www.jianshu.com/p/48ed37738a9e

    https://blog.csdn.net/hello_json/article/details/84954039

    https://blog.csdn.net/jun4331247/article/details/51182390

    我的最总结果是未实现效果,今后有机会一定继续把这块欠缺补上,继续补在这个博客 下面。

    展开全文
  • 下面是正题,如何让你的app一直运行在后台。 核心思想:捕获 onKeyDown的“Back”事件 其实“一直”这个词并不妥当,没有哪个用户会希望某个程序一直存在在任务栏,万一手机出现卡顿的问题那么他很可能会把锅直接...


    今天是个特殊的日子,先追忆一下张国荣先生。



    下面是正题,如何让你的app一直运行在后台。
    核心思想:捕获 onKeyDown的“Back”事件
    其实“一直”这个词并不妥当,没有哪个用户会希望某个程序一直存在在任务栏,万一手机出现卡顿的问题那么他很可能会把锅直接甩给你,这就尴尬了。所以我们要的就是,不让用户点“返回”键直接退掉应用即可,当用户在任务栏清理掉我们的时候,也不要让service重启app就可以了。话不多说,直接上代码。

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            FragmentManager fm = getSupportFragmentManager();
            int count = fm.getBackStackEntryCount();
            if (keyCode == KeyEvent.KEYCODE_BACK) {
           
                    Intent intent = new Intent(Intent.ACTION_MAIN);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.addCategory(Intent.CATEGORY_HOME);
                    startActivity(intent);
                    return true;//不执行父类点击事件
                }
    
                return super.onKeyDown(keyCode, event);//继续执行父类其他点击事件
    }
    代码很简单,我们捕获BACK键的点击事件,不去执行BACK键应有的操作,而是通过代码的修改,执行HOME键的操作,
    那么当用户点击了BACK键想结束应用,其实是点了HOME键,都是回到了桌面。
    
    
    如果你的Activity上静态添加了若干fragment的话,那么代码如下:
     @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            FragmentManager fm = getSupportFragmentManager();
            int count = fm.getBackStackEntryCount();
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (count != 0) {
                
    
    } else { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); return true;//不执行父类点击事件 }
                return super.onKeyDown(keyCode, event);
    }
    我们需要判断一下子,如果返回栈里有东西的话,不能让app直接回到桌面,所以返回父类的点击事件,else 返回桌面即可

    
    
    
    
    
    










    展开全文
  • 自从微课堂模块发布以来,一直困扰着客户的便是讲师如何独立上传视频,发布课程以及管理客户对自己课程的评价等问题。我们从最初的讲师只能由后台添加—>后来的讲师在手机端申请,管理员后台审核—>讲师无法发布课程...
  • iPhone一直让人诟病的就是其内置应用程序只提供很少的功能。比如呼叫转移功能,仅能设置一个简单的呼叫转移,无法根据实际的情况设置诸如遇忙转移、无应答转移等,现在贴出一部分在iPhone上可以使用的GSM代码,其中...
    iPhone一直让人诟病的就是其内置应用程序只提供很少的功能。比如呼叫转移功能,仅能设置一个简单的呼叫转移,无法根据实际的情况设置诸如遇忙转移、无应答转移等,现在贴出一部分在iPhone上可以使用的GSM代码,其中包含了不同呼叫转移的设置代码,使用的方法也很简单,直接在iPhone的拨号界面输入这些代码之后,按下“呼叫”键即可。
      手机内部功能
      *3001#12345#*
      运行手机内置的 FieldTest 隐藏程序,可以查看基站信息、信道、信号强弱,固件版本号等内容
      *#06#
      查询手机的 IMEI 码。

      所有来电类型的呼叫转移(包括通话、数据呼叫、传真呼叫等的呼转)
      如果在设置呼叫转移时遇到错误,或者你想取消所有呼叫转移,可以尝试使用【##002#】或【##004#】代码进行关闭所有呼叫转移。
      所有来电:
      查询状态:*#21#
      设置转移:**21*转移到的电话号码#
      取消转移:##21#
      无应答的来电:
      查询状态:*#61#
      设置转移:**61*转移到的电话号码*秒数(最小5秒,最多30秒)#(例如:**61*13809812345*11*30#)
      取消转移:##61#
      关机或无信号时的来电:
      查询状态:*#62#
      设置转移:**62*转移到的电话号码#
      取消转移:##62#
      遇忙时的来电:
      查询状态:*#67#
      设置转移:**67*转移到的电话号码#
      取消转移:##67#

      短信中心号码:
      查询状态:*#5005*7672#
      设置号码:*5005*7672*短信中心号码#
      删除号码:##5005*7672#

      呼叫等待:
      查询状态:*#43#
      启用等待:*43#
      取消等待:#43#

      写在最后:
      当然你也可以将SIM卡插到其他手机,比如Dopod的手机上,然后设定短信中心号码以及来电转移,来电等待等信息,然后再将SIM卡插回您的iPhone上就能享受来电转移,来电等待等服务了。

     

    摘自:http://www.linkerp.com/ReadNews.asp?NewsID=322

    转载于:https://www.cnblogs.com/NoRoad/archive/2011/04/18/2020115.html

    展开全文
  • Android经典书籍

    热门讨论 2011-05-04 09:06:19
    在这里我介绍另一本Android的教程-Android Application Development,出版社O’Reilly 我想大家再熟悉不过了,下面是这本书的一点...我们别忘了Android是在手机运行的,所以在十四、十五两章介绍如何使用电话的功能。
  • 这种情况下,如果手机连着电脑来运行程序程序退到后台后程序一直运行,丝毫不停止,控制台的信息会一直打印输出。但是,当不连着电脑时,单独在手机上点开运行,程序就会在后台过了一会就挂起,当重新点开程序时...
  • 五:Java如何做到机器理解我们想要做的东西 用·个图来描述这个过程会比较谷易理解: PDF文件使用" pdfFactory Pro"试用版本创建ww, fineprint,cn Java私塾跟我学系列JAⅥ篇网址:htp:/www.lavass.Cn电话:...
  • iPhone开发秘籍(第2版)--详细书签版

    热门讨论 2012-12-11 13:42:25
    2.10.4 编译和运行Hello World应用程序 53 2.10.5 对编译后的应用程序签名 53 2.11 从Xcode到iPhone:Organizer Interface 54 2.11.1 Projects and Sources列表 54 2.11.2 Devices列表 55 2.11.3 iPhone ...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    2.10.4 编译和运行Hello World应用程序 53 2.10.5 对编译后的应用程序签名 53 2.11 从Xcode到iPhone:Organizer Interface 54 2.11.1 Projects and Sources列表 54 2.11.2 Devices列表 55 2.11.3 iPhone ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...
  • Vue 中如何让 input 聚焦?(包含视频讲解) 如何在 Vue 中使用 JSX 以及使用它的原因 如何在Vue中动态添加类名 Vue 中 强制组件重新渲染的正确方法 Vue 和递归组件 20 个新的且值得关注的 Vue 开源项目 搞懂并学会...
  • Android应用开发揭秘--详细书签版

    热门讨论 2012-12-12 13:27:46
    如何进行程序性能测试?如何实现ui、zipalign和图片优化?  ·如何通过ndk利用c、c++以及通过ase利用python等脚本语言开发android应用? 作译者 杨丰盛,国内Android领域的先驱者和布道者,资深Android开发...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    可能的话,可以到ic37去买一些小零件,自己搭一个小系统它工作起来。 HOTLEK的单片机是RISC结构的8位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成I/O型单片机、LCD型单片机...
  • 如果多端维护,经常会因为某些端的流量不大,就一直拖延无法那些用户享受到最新服务。另外登陆支付在客户端部分,已经被uni-app统一成一样的api了。 问:多端是不是一种妥协,是否会造成性能下降? 答:good ...
  • 如果多端维护,经常会因为某些端的流量不大,就一直拖延无法那些用户享受到最新服务。另外登陆支付在客户端部分,已经被uni-app统一成一样的api了。 问:多端是不是一种妥协,是否会造成性能下降? 答:good ...
  • 073《Chrome Better History》如何让Chrome查找历史记录更方便? 072《OneNote Web Clipper》微软免费跨平台笔记OneNote扩展程序 071《Color Tab》色彩猎人优质配色提升你的审美 070《网盘助手》网盘万能钥匙,...
  • 12306心蓝定票助手

    2015-03-19 09:14:02
    ...5、因个人电脑系统问题,可能会遇到.net 4.0安装失败的情况,请尝试如下方法修复:点击查看如何修复.net 4.0。 更多详细说明请查看: 心蓝12306订票助手——轻松购票快乐回家〔2014〕...
  • 【App 信息查看】 快速查看手机信息,App 基础信息、签名相关、权限信息的渠道,避免去手机设置查找或者查看项目源代码的麻烦; 【开发者选项 Android特有】 一键跳转开发者选项,避免安卓由于平台差异导致的入口不...
  • 网站能够正常工作于尽可能旧的浏览器上,然后不断为它在新型浏览器上实现更多的增强和改进。 Viewport 移动设备上的Viewport就是设备的屏幕上能用来显示网页的一块区域,即浏览器上用来显示网页的那部分区域。...
  • 也就是说如果, 传送端一直等不到接收端的 ACK 封包时, (1a) 他会一直等待到传回 ACK 为止, 这段时间他不会传送任何新的封包 (1b) 超过时间后, 他会切断与接收端的通信. (2) 为此, 现有 ADSL 多半建议使用者将 TCP...
  • 电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch # init 所有的已经连接到...
  • 微服务是用于构建应用程序的架构风格,一个大的系统可由一个或者多个微服务组成,微服务架构可将应用拆分成多个核心功能,每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作和出现故障的时候...
  • 如何让代码变得更加容易让人维护? 直接看我这篇博客:https://juejin.im/post/5c46e6fb6fb9a049a5713bcc 4.6 存在待解决问题 动态的管理组件,所以给每个组件添加几个生命周期状态:加载、卸载和降维。为此...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    文件为doc版,可自行转成txt,在手机上看挺好的。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学的60个命令 Linux提供...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

如何让手机程序一直运行