关闭我的应用程序一段时间然后再次重新打开它,我的应用程序将不会更新位置或有时需要很长时间(约5分钟)更新之前.我该如何解决?这是我的代码
private LocationManager lm;
private LocationListener locationListener;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lm = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationListener = new mLocationListener();
lm.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, locationListener); }
private class myLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
TextView gpsloc = (TextView) findViewById(R.id.widget28);
gpsloc.setText("Lat:"+loc.getLatitude()+" Lng:"+ loc.getLongitude());
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
TextView gpsloc = (TextView) findViewById(R.id.widget28);
gpsloc.setText("GPS OFFLINE.");
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}
Run Code Online (Sandbox Code Playgroud)
一些东西...
可能发生的事情是你的应用程序正在恢复而不是创建"第二"时间.如果您希望每次查看活动时都查找新位置,您需要将以下代码移到onResume()
方法中:
lm.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, locationListener); }
Run Code Online (Sandbox Code Playgroud)
您还需要确保在onPause()
方法中取消注册LocationListener .这样的事情应该这样做:
@Override
public void onPause() {
lm.removeUpdates(locationListener);
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
看起来你在这一行上有一个错字:
locationListener = new mLocationListener();
Run Code Online (Sandbox Code Playgroud)
我认为它应该是:
locationListener = new myLocationListener();
Run Code Online (Sandbox Code Playgroud)
此外,正如其他人提到的那样,没有理由创建一个全新的类来充当您的LocationListener.实际上,它会不必要地耗尽内存,而且在移动设备上内存非常宝贵.
以上所有内容的组合会使您的Activity看起来像这样:
public class Whatever extends Activity implements LocationListener {
private LocationManager lm;
private LocationListener locationListener;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new mLocationListener();
}
@Override
public void onResume() {
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1, this);
super.onResume();
}
@Override
public void onPause() {
lm.removeUpdates(this);
super.onPause();
}
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
TextView gpsloc = (TextView) findViewById(R.id.widget28);
gpsloc.setText("Lat:"+loc.getLatitude()+" Lng:"+ loc.getLongitude());
}
}
@Override
public void onProviderDisabled(String provider) {
TextView gpsloc = (TextView) findViewById(R.id.widget28);
gpsloc.setText("GPS OFFLINE.");
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8990 次 |
最近记录: |