请问android 的service 在手机休眠时不能正常运行,手机唤醒或者连接电源线时恢复正常,怎么解决呀 我想实现后台服务1分钟上报一次定位,能够在手机锁屏休眠时能够正常运行,试了前台服务,电源锁,等各种方法都不行。咕咚,高德等app 的持续录制轨迹不知道是怎么实现的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用startService方式启动Service,手机在休眠时该Service也不会停止运行的Intent startIntent = new Intent(this, MyService.class);startService(startIntent);MyServicepublic class MyService extends Service implements Runnable { public static final String TAG = "MyService"; private boolean isStop; @Override public void onCreate() { super.onCreate(); Log.d(TAG, "onCreate() executed"); isStop = false; new Thread(this).start(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(TAG, "onStartCommand() executed"); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy() executed"); isStop = true; } @Override public IBinder onBind(Intent intent) { return null; } @Override public void run() { int count = 0; while (!isStop) { try { Thread.sleep(60*1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d(TAG, "执行次数" + (++count)); //这里写下你1分钟上报一次定位的逻辑 } }} 楼上的做法可以的,不能正常运行是不是绑定了activity导致service随着activity的生命周期走了? http://blog.csdn.net/qq_35693043/article/details/78114987这是我的做法,目前我项目中是这样的。 android 真机调试 ListView中让item不能被选中 百度api RouteOverlay的问题 高分:解答在拨号盘数字界面输入数字检索出联系人 新手菜鸟求关于Adapter的问题 配置高的电脑启动android模拟器速度反而下降了,为什么? 图上用的是TabActivity? 错误 android APK开发中如何取得当前系统时间? 看大家android界面设计是拿Android Design UI Kit设计的,不直接在eclipse里设计,但是UI KIT怎么用呢 Android canvas绘折线图 微信开放平台创建应用时填写的应用签名是sha1还是MD5
Intent startIntent = new Intent(this, MyService.class);
startService(startIntent);
MyServicepublic class MyService extends Service implements Runnable { public static final String TAG = "MyService";
private boolean isStop; @Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "onCreate() executed");
isStop = false;
new Thread(this).start();
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand() executed");
return super.onStartCommand(intent, flags, startId);
} @Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() executed");
isStop = true;
} @Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void run() {
int count = 0;
while (!isStop) {
try {
Thread.sleep(60*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d(TAG, "执行次数" + (++count));
//这里写下你1分钟上报一次定位的逻辑
}
}
}
这是我的做法,目前我项目中是这样的。