public class LocationService extends Service {
private Handler mHandler = new Handler();
private Timer mTimer = null;
private int mCount = 0;
public static final long NOTIFY_INTERVAL = 10 * 1000;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
// cancel if already existed
if (mTimer != null) {
mTimer.cancel();
} else {
// recreate new
mTimer = new Timer();
}
// schedule task
mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
}
@Override
public void onDestroy() {
mTimer.cancel();
}
private class TimeDisplayTimerTask extends TimerTask implements LocationListener {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10 * 1000, 0,
TimeDisplayTimerTask.this);
}
});
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
Toast.makeText(getApplicationContext(), Double.toString(location.getLat(), Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), Double.toString(location.getLng(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Cant Get Location", Toast.LENGTH_LONG).show();
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}
这段代码在模拟器上运行良好。我每 10 秒就能获取一次位置信息。但是当我在真实手机上测试它时,我根本看不到任何东西出现。这段代码有什么问题吗?请告诉我如何解决这个问题。
您可以验证您的服务没有被后台设备杀死吗?
(您可以在“设置”>“应用程序”>“运行”选项卡>“[您的应用程序名称]”中看到这一点,那里应该有进程计数和服务计数)
Android 设备有自己的方式来终止后台服务。如果是这种情况,您应该在前台启动服务。为了防止它被杀死。
你怎么问?您应该在服务开始时添加以下内容:
Notification notification = new Notification();
startForeground(1, notification);
你问的通知是什么?当您的应用程序处于后台时,这会提示用户,您可以用它替换您的吐司。这是与其相关的链接。检查已接受的答案。
Android - 为服务实现startForeground? https://stackoverflow.com/questions/6397754/android-implementing-startforeground-for-a-service
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)