请问android 的service 在手机休眠时不能正常运行,手机唤醒或者连接电源线时恢复正常,怎么解决呀

frankenstein306005 2017-09-27 09:08:51
我想实现后台服务1分钟上报一次定位,能够在手机锁屏休眠时能够正常运行,试了前台服务,电源锁,等各种方法都不行。咕咚,高德等app 的持续录制轨迹不知道是怎么实现的。
...全文
191 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
新画师 2017-09-28
  • 打赏
  • 举报
回复
http://blog.csdn.net/qq_35693043/article/details/78114987 这是我的做法,目前我项目中是这样的。
  • 打赏
  • 举报
回复
楼上的做法可以的,不能正常运行是不是绑定了activity导致service随着activity的生命周期走了?
Jing丶無雙 2017-09-28
  • 打赏
  • 举报
回复
你用startService方式启动Service,手机在休眠时该Service也不会停止运行的
Intent startIntent = new Intent(this, MyService.class);
startService(startIntent);
MyService
public 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分钟上报一次定位的逻辑
		}
	}
}

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧