当前位置: 代码迷 >> Android >> APP退出后,如何让后台继续一些操作,用Service好像不行吧
  详细解决方案

APP退出后,如何让后台继续一些操作,用Service好像不行吧

热度:6   发布时间:2016-04-28 00:36:02.0
APP退出后,怎么让后台继续一些操作,用Service好像不行吧?
我查了下,启动这个Service的Activity退出后,Service不退。但是如果APP退了,Service就退了。

我现在想即使APP退出了(就是点Home按钮,然后退出程序后),后台还能继续做一些操作。比如在某个时间往SQLite数据库里写数据。怎么实现呢?

微信就是app点Home退出后,还能接受消息,必须程序管理器里强制退出才行。他是怎么做到的?
------解决思路----------------------
在onstartcommand

里面 return START_STICKY;
如果被第三方软件或者系统清理了还是不行,除非去搞个守护进程:至于怎么实现就不清楚了貌似用到c++的东西
------解决思路----------------------
service作为一个独立的进程
android:process=":download"
------解决思路----------------------
service 和 APP 本身都是可以独立运行的, 如果service里没有写循环, 当然启动一次后面就不会再动了,
可以考虑和定时器结合, 让 service 按时间启动.
// 时钟服务
AlarmManager am = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
// 执行内容
Intent intent = new Intent(this, GpsInterval.class); // 这是一个service
// 延迟执行内容
PendingIntent pii = PendingIntent.getService(this, 0, intent, 0);
// 执行时间计算
Calendar calendar = Calendar.getInstance(); 
calendar.add(Calendar.SECOND, 60); // 这里间隔时间, 60秒后
// 设置执行计划
am.set(AlarmManager.RTC_WAKEUP, calendar.getTime(), pii);

------解决思路----------------------
不知道你说的点home退出是不是指的长按home键把后台运行程序划掉那种,如果是的话我今天刚好也在做这个,我如果划掉APP后服务也会被关掉,但是系统会自动重启该服务,服务重启后依然能接受到各种消息。需要注意的是如果传入了一个带参的intent,onStartCommand()的默认返回值super.onStartCommand(intent, flags, startId)需要改为START_REDELIVER_INTENT;
  相关解决方案