znq*_*znq 15 lifecycle gps android geolocation
有什么样的应用程序的全局onPause()和onResume()?
我的主要活动是监听GPS修复,我想在切换到另一个屏幕/活动时继续工作.因此,我不能LocationListener在活动中取消注册onPause().但是,我仍然希望在切换到另一个应用程序时取消注册我的GPS监听器(因此节省电池)并在返回我的应用程序时将其重新打开,无论用户当前处于何种屏幕/活动状态.
有任何想法吗?
Com*_*are 12
有没有像应用程序全局onPause()和onResume()?
不,对不起
我的主要活动是监听GPS修复,我想在切换到另一个屏幕/活动时继续工作.因此,我无法在活动的onPause()中取消注册我的LocationListener.但是,我仍然希望在切换到另一个应用程序时取消注册我的GPS监听器(因此节省电池)并在返回我的应用程序时将其重新打开,无论用户当前处于何种屏幕/活动状态.
这是一种可能的方法:
步骤#1:将LocationListener逻辑移动到a Service,活动通过本地绑定模式连接到其中.还至少有一个服务调用startService(),因此unbindService()不会导致它Service消失(假设您正在使用本地绑定模式).
步骤2:让活动在onPause()和期间调用服务onResume().
步骤3:让服务保持未完成活动的参考计数.
步骤#4:当引用计数达到零时,让服务安排通过Timer和唤醒TimerTask.此外,TimerTask如果引用计数增加,则取消任何此类未完成的.
步骤#5:TimerTask如果它被执行则关闭GPS.
网络是你只会在一定程度的不活动后释放GPS.这种不活动可能是出于任何原因.
您可以创建一个应用程序类,如果它实现了Application.ActivityLifecycleCallbacks
public class AppController extends Application implements Application.ActivityLifecycleCallbacks
{
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Toast.makeText(this, "----------onCreate()---------", Toast.LENGTH_LONG).show();
}
@Override
public void onActivityStarted(Activity activity) {
Log.i("ApplicationName","----------onActivityStarted()---------");
}
@Override
public void onActivityResumed(Activity activity) {
Log.i("ApplicationName","----------onActivityResumed()---------");
}
@Override
public void onActivityPaused(Activity activity) {
Toast.makeText(this, "----------onActivityPaused()---------", Toast.LENGTH_LONG).show();
}
@Override
public void onActivityStopped(Activity activity) {
Log.i("ApplicationName","----------onActivityStopped()---------");
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.i("ApplicationName","----------onActivitySaveInstanceState()---------");
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
Run Code Online (Sandbox Code Playgroud)
然后从您的活动中致电
@Override
protected void onPause() {
AppController controller=(AppController)getApplicationContext();
controller.onActivityPaused(Main3Activity.this);
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7048 次 |
| 最近记录: |