怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死
1、首先要保证你的程序一直在于后台运行,也就是所谓和守护程序一样,而且在任何认为kill和系统内存回收kill后,保证重启。
2、获取系统内部资源。
3、上报策略,间隔时间上报还是按月按天上报。
4、监测网络,当网络开启的时候第一时间上报数据。
5、服务器连接。
对于以上问题的解决:
1、利用广播BroadcastReceiver监听,当系统启动时启动服务service,监听的action是
androidintentactionBOOT_COMPLETED,当服务被kill时在onDestroy()再次启动服务,在
onStartCommand()中 设置 flags = START_STICKY;return
superonStartCommand(intent, flags, startId),保证服务重启。
2、利用getPackageManager(),getInstalledPackages(),getApplicationInfo()来获取系统安装数据。
3、上报策略可以每天(时间间隔24小时),但是不是很准确,一般按日上报不做时间间隔这样个人认为比较准确。
4、检测开启网络上报数据,还是利用广播BroadcastReceiver监听,监听action为androidnetconnCONNECTIVITY_CHANGE,当发现网络开启时就触发数据上报。
5、服务器连接,如果你了解java熟悉java企业级开发,那么你对httpclient并不陌生,很幸运的是android sdk已经集成了httpclient,那我们服务器连接首选它了。
以上是我做的解决方案,你是否有更好的替代品,希望我只是抛了块砖头,后面你继续。。。。
service被系统异常kill掉后回重启。有以下值:
onStartCommand有三种返回值:
START_STICKY:sticky的意思是“粘性的”。使用这个返回值时,我们启动的服务跟应用程序”粘”在一起,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务。当再次启动服务时,传入的第一个参数将为null;
START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。
START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。
php做前端,java做后端淘宝是个例子服务器端前后分开是为了两方面,虽然淘宝最开始并不想这样做。。。先说下历史,淘宝是最开始php全部,后来发现开销太大,代码效率不行,就直接把数据存储啊,用户通知啊就交给java实际上大部分网站都乐意采用这种前端php后端java或者c++这种形式,我是phpc++这种。优点,核心动作效率肯定高,c++java这种代码效率奇高。比php脚本好很多。前端php,语法简单,维护简单,部署简单,而且容易找到维护人员。总之就是开发快,维护成本低。大致了解了吗?你说的h5+java实际上就是把java提到前台,不是不可以,维护和开发成本太高了啊。前端开发要经常搞,但是java做前台要调试、编译部署还要重编译。麻烦,人工开销也大。不划算如果是net技术就更高成本了。光服务器软件一块就要多少了。所以微软的框架用的不多。国内外都不多,用met的成本开发维护都麻烦。要气硬件条件还苛刻。
你可以不需要使用登录的方式,可以学习比如新浪微博,腾讯微博的OAuth10的方式
简单的说,其实就是在你的AndroidApp上有一个公钥,而你服务器上也同时使用这个公钥就可以做到数据加密
你AndroidApp上比如有一个AppSecret="abcdefg"
而你的服务器上面也有这个AppSecret="abcdefg"
在AndroidApp上使用SHA1(自己百度找JAVA SHA1的工具类)加密,密钥使用AppSecret
数据发送到服务器上,服务器使用AppSecret="abcdefg"解密即可
这个前提是别人无法破解你的App获取到App里面的AppSecret,而做到这个则需要解开Android的App包,如果别人真做到了,那你任何安全性的保障都是无用的,所以以上的方法即可
0条评论