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

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

Войти
Регистрация
Восстановить пароль
 
7Alex
216 / 0 / 1
Регистрация: 24.06.2014
Сообщений: 144
#1

Service в новом процессе - Программирование Android

21.05.2015, 17:13. Просмотров 340. Ответов 1
Метки нет (Все метки)

Мне нужно запускать сервис в новом процессе, чтобы он не перезапускался после завершения Activity.
Сделал так:
XML
1
2
3
4
5
        <service
            android:name=""
            android:process="пакет моего приложения.b"
            android:exported="false">
        </service>
Это из AndroidManifest.xml.
Ещё у меня есть класс со статической переменной:
Java
1
public static Hashtable<String, String> имя переменной...
В сервисе я методом put() вставляю значения в эту/этот Hashtable, и значения точно вставляются, так как я вывожу Hashtable в LogCat в классе с Hashtable,
а потом, где бы я ни пытался получить методом get() значение из Hashtable в Activity, я получаю null. До того, как я переместил сервис в новый поток, всё работало.

Объясните, пожалуйста, что не так?
Мне нужно получить ссылку в Activity на экземпляр класса, с которым работает сервис или что?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2015, 17:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Service в новом процессе (Программирование Android):

Сервис в отдельном процессе - Программирование Android
Здравствуйте. Как определить из приложения запущен или остановлен сервис, находящийся в другом процессе? Добавлено через 27 минут...

Service - Программирование Android
Как создать приложение как Service?

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

Fragments и service - Программирование Android
такой вопрос как реализовать запуск сервиса и обработку результатов приложении где есть fragments.? хотелось бы запускать сервис в...

GPS service - Программирование Android
Написал сервис для работы GPS однако при попытке вытащить данные просто выдаёт 0 класс реализующий работу c GPS: package...

Автозагрузка Service - Программирование Android
Привет, люди! Давно бьюсь с автозапуском сервисов. Скиньте, пожалуйста РАБОЧИЙ пример сего действа, иначе я вообще никогда так и не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
21.05.2015, 22:41 #2
7Alex, недавно читал про сервисы (службы) в Android, там насчитали 4 способа передачи данных между активностью и сервисом. Я использовал не BroadcastReceiver, а Message. И вот как сделал.
Кликните здесь для просмотра всего текста

В сервисе:
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
34
35
36
37
38
39
40
41
42
43
44
45
    private Handler handler;
    private Messenger messenger;
 
    // ...
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // Let it continue running until it is stopped.
        Bundle extras = intent.getExtras();
        messenger = (Messenger) extras.get("MESSENGER");
 
        // Здесь какие-то ваши действия типа запуска проигрывателя.
 
        return START_STICKY;
    }
 
    // В одном из методов надо запустить какие-то задания:
        // ...
        handler = new Handler();
        handler.postDelayed(updateTrackTask, TIMEOUT);
        // ...
 
    // Периодический запрос названия трека.
    private Runnable updateTrackTask = new Runnable() {
        public void run() {
            if (player != null && player.isPlaying()) {
                new ShowTrack().execute();
                handler.postDelayed(this, TIMEOUT);
            }
        }
    };
 
    private void sendMessage(String artist, String title) {
        Bundle data = new Bundle();
        data.putString("ARTIST", artist);
        data.putString("TITLE", title);
        Message message = Message.obtain();
        message.setData(data);
        try {
            messenger.send(message);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
    // ...
    // В каком-то месте вызываем sendMessage(...).
В активности нужно написать другие строки:
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
    private static MessageHandler messageHandler;
 
    // Получение информации о треке из службы.
    public static class MessageHandler extends Handler {
        @Override
        public void handleMessage(Message message) {
            Bundle data = message.getData();
            showTrack.showTrack(data.getString("ARTIST"), data.getString("TITLE"));
        }
    }
 
    // Проигрывание радио по нажатию кнопок.
    private void startPlaying() {
        showTrack.showTrack("", "Подготовка к воспроизведению...");
        messageHandler = new MessageHandler();
        Intent i = new Intent(this, RadioService.class);
        i.putExtra("MESSENGER", new Messenger(messageHandler));
        startService(i);
    }
 
    private void stopPlaying() {
        showTrack.showTrack("", "");
        stopService(new Intent(this, RadioService.class));
        messageHandler = null;
    }

Может быть, пригодится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2015, 22:41
Привет! Вот еще темы с ответами:

SQLite из Service - Программирование Android
Здравствуйте, у меня такой вопрос. Уже бьюсь 2 дня, ни как не могу сделать. Может вы мне поможете советом, а лучше примером. Как...

App Service - Программирование Android
Возможно ли как-то создать приложение, которое запускает сервис и при этом, если в дальнейшем удалить само приложение, то сервис останется...

Работа с Service - Программирование Android
Всем добрый вечер! Есть приложение под андроид. С активити, с интерфейсом, всё как нужно. Теперь потребовалось сделать из него фоновое...

Запуск Activiry из Service - Программирование Android
Как запустить activity из сервиса так, чтобы при этом на фоне не показывалось основное приложение (которое рождает сервис) Наверное...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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