Android: приложение global onPause() и onResume()?
Есть ли что-то вроде приложения global onPause()
и onResume()
?
Моя основная деятельность прослушивает исправления GPS, которые я хочу продолжить работать при переключении на другой экран/активность. Поэтому я не могу отменить мой LocationListener
в действии onPause()
. Однако я все же хочу отменить регистрацию своего GPS-приемника при переключении на другое приложение (так что сэкономьте батарею) и снова включить его при возврате в мое приложение, независимо от того, какой экран/активность пользователь в данный момент находится.
Любые идеи?
Ответы
Ответ 1
Есть ли что-то вроде приложения global onPause() и onResume()?
Нет, извините.
Моя основная деятельность прослушивается для GPS исправления, которые я хочу продолжить работает при переключении на другой экран/активность. Поэтому я не могу отмените регистрацию моего LocationListener в активность onPause(). Однако я все еще хочу отменить регистрацию моего слушателя GPS при переключении на другое приложение (так что сэкономьте батарею) и поверните его назад при возврате в мое приложение, независимо от того, какой экран/активность пользователь в данный момент находится.
Вот один из возможных подходов:
Шаг # 1: Переместите логику LocationListener
в Service
, к которой действия подключаются через локальный шаблон привязки или что-то еще. Также, по крайней мере, один служебный вызов startService()
, поэтому unbindService()
не приведет к исчезновению Service
(при условии, что вы используете шаблон локальной привязки).
Шаг № 2: вызовите действия в службу во время onPause()
и onResume()
.
Шаг № 3: Служба поддерживает количество ссылок на выдающиеся действия.
Шаг №4: Когда счетчик ссылок достигнет нуля, попросите услугу организовать пробуждение через таймер и TimerTask
. Кроме того, отмените любой такой выдающийся TimerTask
, если счетчик ссылок будет увеличен.
Шаг № 5: Если вы когда-либо выполняете выполнение команды TimerTask
выключите GPS.
Сеть заключается в том, что вы выпустите только GPS после такого-то количества бездействия. Эта бездеятельность может быть по какой-либо причине.
Ответ 2
Вы можете создать класс приложения и, если он реализует 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) {
}
}
Затем вызов из вашей активности
@Override
protected void onPause() {
AppController controller=(AppController)getApplicationContext();
controller.onActivityPaused(Main3Activity.this);
super.onPause();
}