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秒获得一次位置。但是当我在真实手机上测试它时,我根本看不到任何东西。这段代码有什么问题吗?请告诉我如何解决这个问题。
答案 0 :(得分:0)
您是否可以验证您的服务是否未被设备在后台杀死?
(您可以在设置>应用>运行标签> [您的应用名称]上看到此信息。那里应该有进程计数和服务计数)
如果在后台查杀服务,Android设备有自己的方式。如果是这种情况,您应该在前台开始服务。为了防止它被杀死。
你怎么问?您应该在服务开始时添加此内容:
Notification notification = new Notification();
startForeground(1, notification);
你问的通知是什么?当您的应用程序处于后台时,这会提示用户,您可以用此替换您的toast。这是与此相关的链接。检查接受的答案。