сохранить намерение после поворота экрана

Вопрос:

в мое приложение я использую намерение:

private Handler mHandler = new Handler();
.
.
mServiceIntent = new Intent(this, ObdGatewayService.class);
mServiceConnection = new ObdGatewayServiceConnection();
mServiceConnection.setServiceListener(mListener);
// bind service
Log.d(TAG, "Binding service..");
bindService(mServiceIntent, mServiceConnection,
Context.BIND_AUTO_CREATE);

здесь моя деятельность на onCreate начинает новую услугу. это мой onDestroy:

    @Override
protected void onDestroy() {
super.onDestroy();

mServiceIntent = null;
mServiceConnection = null;
mListener = null;
mHandler = null;
}

это mServiceConnection:

public class ObdGatewayServiceConnection implements ServiceConnection{

private static final String TAG = "com.echodrive.io.ObdGatewayServiceConnection";

private IPostMonitor service = null;
private IPostListener listener = null;

public void onServiceConnected(ComponentName name, IBinder binder) {
service = (IPostMonitor) binder;
service.setListener(listener);
}


public void onServiceDisconnected(ComponentName name) {
service = null;
Log.d(TAG, "Service disconnesso.");
}


public boolean isRunning() {
if (service == null) {
return false;
}

return service.isRunning();
}


public void addJobToQueue(ObdCommandJob job) {
if (null != service)
service.addJobToQueue(job);
}

public void setServiceListener(IPostListener listener) {
this.listener = listener;
}

mListener — это слушатель из интерфейса:

public interface IPostListener {
void fineTest(DatiTest risultati);
void startAcquisizione();
void aquisizioneTerminata();
void aquisizioneInterrotta(String motivo);
void connessioneCorretta();
void gpsStato(boolean stato);
}

моя проблема в том, как сохранить весь этот код после ротации? благодарю!

Лучший ответ:

Рекомендуемый способ сохранения состояния при поворотах — сохранить их в outState. Это достигается путем переопределения метода onSaveInstanceState. Этот метод предоставляет объект Bundle outState которому можно добавить Parcelable и Serializable. Это должно работать нормально для вашего объекта Intent поскольку он реализует Parcelable но может не работать для Handler поскольку он только расширяет Object.

Другое решение состоит в том, чтобы сделать эти элементы статичными. Однако будьте очень осторожны, если вы решите сделать это. Убедитесь, что значение статического члена никогда не удерживается в Context или иерархии представлений и т.д., Или вы можете легко ввести утечки памяти.

Если ни один из них не является приемлемым для вас, есть вариант, предложенный Тушаром. Однако, если вы не будете осторожны, это сделает вашу жизнь очень трудной очень быстро. Большая причина, по которой действия уничтожаются и воссоздаются, так что ресурсы могут быть перезагружены. Поэтому, если у вас есть макеты, строки, цвета, размеры или в основном любой ресурс, специально предназначенный для ландшафта или планшета или разных версий, вам придется перезагрузить весь пользовательский интерфейс самостоятельно.

Оцените статью
TechArks.Ru
Добавить комментарий