我有一个GPS
基于应用程序的工作。它有许多活动,并且都使用GPS
. 例如,一个活动显示到某个位置的距离,另一个活动显示速度和方向。我设置并呼入requestLocationUpdates()
并onCreate()
呼入removeUpdates()
。onPause()
这一切都有效,但GPS
在切换活动时会闪烁并且必须重新获取。我做了一个测试,如果我把removeUpdates()
inonStop()
而不是 inonPause()
没有闪烁。显然onStop()
是在新活动开始后调用,这解释了没有闪烁。
我已阅读有关此主题的帖子,似乎存在意见分歧。但是,看起来我应该使用onStop()
并且想知道是否有任何理由不应该使用。
第二个问题是没有onResume()
代码,因此GPS
在后退箭头或关闭和打开屏幕后没有代码。我应该解决这个问题。现在我的onCreate()
代码创建了位置管理器,基本上我所有的代码都在里面。看起来我应该按照生命周期流程图移动removeUpdates()
到 onStop 并将 lm 和 ll 的创建移动到onStart()
. 它是否正确?
这是我的onCreate()
代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set);
textView1 = (TextView)findViewById(R.id.textView1);
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
这是我的 onPause 代码:
@Override
protected void onPause() {
super.onPause();
if(lm != null) {
lm.removeUpdates(ll);
}
ll = null;
lm = null;
}
所以我认为我应该将 onPause() 更改为 onStop() 并将 onStart() 设为:
@Override
public void onStart() {
super.onStart();
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
我的 onCreate 代码是这样的;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set);
textView1 = (TextView)findViewById(R.id.textView1);
}
This said, I am kind of new to all this and this is my first application so I would like to know what I am missing here.