Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alex-rudenkiy
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 401
#1

Как сохранить Service? - Программирование Android

10.08.2016, 18:47. Просмотров 112. Ответов 0
Метки нет (Все метки)

Подскажите пожалуйста, как сохранить Service, а точнее ссылку на Service и присоединённый из основного Activity в Service Callback? Это мне приходится делать из-за того что при смене ориентации экрана Activity создаётся заново и естественно все переменные обнуляются и ссылка на мой Service

Собственно вот фрагмент отвечающий за Service в Activity :

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Intent intent;
@Override
protected void onStart() {
    super.onStart();
    intent = new Intent(this, Sservice.class);
    bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
 
@Override
protected void onStop() {
    super.onStop();
    if (mBound) {
        unbindService(mConnection);
        mBound = false;
    }
}
 
private ServiceConnection mConnection = new ServiceConnection() {
 
    @Override
    public void onServiceConnected(ComponentName className,
                                   IBinder service) {
        Sservice.LocalBinder binder = (Sservice.LocalBinder) service;
        mService = binder.getService();
        mBound = true;
        mService.setReciever(response);
    }
 
    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        mBound = false;
    }
};
А это у меня код отвечающий за сохранение данных в Bundle для последующего извлечения при завершении поворота экрана.

Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    boolean saved = savedInstanceState.getBoolean("connected");
}
 
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putBoolean("connected",mService.connected);
    //savedInstanceState. Вот тут я хотел запихнуть в Bundle ссылку на сервис
    super.onSaveInstanceState(savedInstanceState);
}
Вот это у меня Callback срабатывающий из сервиса (на удивление рабочий) :

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sservice.ResponseCallback response;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
 
    instance = this;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);  
 
    response = new Sservice.ResponseCallback() {
        public void response(String response) {
 
            Log.i("Ура ура","Ok");
 
        }
    };
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2016, 18:47     Как сохранить Service?
Посмотрите здесь:

Как сохранить состояние Service после перезагрузки телефона? - Программирование Android
Как сохранить состояние Service после перезагрузки телефона??? т.е мне нужно чтоб сервис начал работать не сначала, а на том месте где...

GPSTracker как Service - Программирование Android
Написал приложение, которое определяет местоположение по GPS/WiFi(мобильным сетям), показывает на карте в виде метки, записывает координаты...

Как запустить метод из Service? - Программирование Android
При запуске сервиса в onCreate запускается метод, когда он отрабатывает запускается PendingIntent.getBroadcast. Как сделать чтобы...

Как получить context MainActivity в Service? - Программирование Android
В MainActivity создаю сервис и startService( SER );, как получить context MainActivity в сервисе, чтобы можно было манипулировать view?

Как передать intent данные в Service? - Программирование Android
Здравствуйте! как передать intent данные в класс с расширением Service? Стандартным способом кажется не получится передать через putextra...

Как отследить принудительную остановку service системой? - Программирование Android
Как отследить остановку service когда Android его останавливает из- за нехватки ресурсов и т.п., ... Нужно выводить диалог для его...

Как запустить service при входящем вызове? - Программирование Android
Есть ли такая возможность разбудить мой сервис при входящем вызове типа alarmManager.setExact(AlarmManager.RTC_WAKEUP,...

Как защитится от повторного запуска Service (защита от дурака)? - Программирование Android
На вся кий случай хочу проставить защиту. Работает одновременно 4 сервиса и ситуаций когда к ним есть обращения, а когда нет куча. При...

Как сделать так, чтобы Service работал после закрытия программы - Программирование Android
Здравствуйте! Никак не могу разобраться, как сделать так, чтобы Service работал после закрытия программы. Вот что я написал в...

Как сохранить ArrayList - Программирование Android
Знаю,вопрос наверное глупый,но как? У меня приложение "Телефонная книга". Если б я просто писал на джаве, то просто добавлял бы контакты в...

Как сохранить все Exception - Программирование Android
Привет. Наверное все знают о NullPointerException и о том что код идеальным не бывает. Есть ли какие логгеры чтобы хотябы сохранить...

Как сохранить целочисленную переменную в кэше? - Программирование Android
как сохранить целочисленную переменную в КЭШе?? можете привести фрагмент кода??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru