Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Fender-bass
0 / 0 / 0
Регистрация: 12.07.2017
Сообщений: 1
1

Управление элементами Activity из Servise

13.07.2017, 07:24. Просмотров 249. Ответов 2
Метки нет (Все метки)

О великие Гуру, я пришел в ваш храм, чтоб молиться вам.
Кликните здесь для просмотра всего текста
Ради собственного развития решил научиться общаться с великим зелёным роботом. Если честно не хотел никому задавать никаких вопросов и научиться тому, что смогу осилить сам, но теперь появился азарт и очень охота реализовать одну вещь, но не знаю как (мозгов не хватает). Молю вас о помощи, и клянусь пред великим зелёным роботом, что не собираюсь стать вашим конкурентом по зарабатыванию денег на этом поприще (все просто для саморазвития).

Теперь суть. Пишу приложение (типа игра) на главной Активити имеется несколько элементов отображающих информацию (TextView, ProgressBar). Имеется метод, который получает данные из БД и обновляет эти элементы в соответствии с данными. Метод запускается при запуске или возобновлении Активити.
Помимо этого есть сервис, который запускается каждые 25 минут и пересчитывает БД. Все работает, все здорово, но не идеально. Приложение построено так, что при его использовании маловероятно долгое нахождение на данной Активити, а при постоянных переходах перед пользователем всегда будет актуальная информация. Однако остаётся небольшая вероятность, что пользователь будет находиться именно в этой Активити, когда сервис запустится и пересчитает БД, и информация в элементах станет неверной.
Хотелось бы исключить такую возможность и добиться того, чтоб в таком случае так-же вызывался метод обновления данных.
Перелопатив интернеты понял вроде, что можно по завершении сервиса разослать броадкаст, но как его услышать в Активити?
Помогите если не сложно. (Или направьте куда копать).
Реальный код выкладывать не вижу смысла, потому как он работает, но для примера покажу как это выглядит, ведь объяснять не умею
Кликните здесь для просмотра всего текста
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
package com.mycompany.myapp2;
import android.app.*;
import com.mycompany.myapp2.data.*;
import android.widget.*;
import android.os.*;
 
public class Primer extends Activity
{
    private 
    ColonydbHelper mDbHelper;
    TextView text1;
    TextView text2;
    int a=0;
    int b=0;
    
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mDbHelper = new ColonydbHelper(this);
        text1=(TextView)findViewById(R.id.text1);
        text2=(TextView)findViewById(R.id.text2);
        }
        
    //старт активности
    @Override
    protected void onStart() {
        super.onStart();
        ReView();}
        
    //метод обновления информации
    public void ReView(){
        //здесь читаем БД (без подробностей, вы и без меня умеете)
        a=cursor.getInt(aIndex);
        b=cursor.getInt(bIndex);
        //и обновляем инфу
        text1.setText(Integer.toString(a));
        text2.setText(Integer.toString(b));
    }
}


И сервис

Кликните здесь для просмотра всего текста
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
46
47
48
package com.mycompany.myapp2;
import android.app.*;
import com.mycompany.myapp2.data.*;
import android.os.*;
import android.content.*;
 
public class Calk extends Service
{
    private ColonydbHelper mDbHelper;
    int a=0;
    int b=0;
    int c;
    int d=2;
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
 
 
    @Override
    public void onCreate() {
        super.onCreate();
        mDbHelper = new ColonydbHelper(this);
    }
 
 
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //здесь читаем БД (без подробностей, вы и без меня умеете)
        a=cursor.getInt(aIndex);
        b=cursor.getInt(bIndex);
        
        //считаем
        c=b*d;
        a=a-c;
        
        //заполняем БД (тоже знаете как)
        //самоуничтожаем сервис
        stopSelf();
        }
        
    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Служба остановлена",
                       Toast.LENGTH_SHORT).show();
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2017, 07:24
Ответы с готовыми решениями:

Servise, BroadcastReceiver, Activity
Здравствуйте, есть сервис и активити, сервис возвращает данные активити через BroadcastReceiver......

Управление элементами меню
Пытаюсь разобраться с явой и поэтому немного сложно сориентироваться: Подскажите пожалуйста -...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было...

Изменение layout-элементов одного activity из другого activity
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго...

Android - Передача данных с одного Activity на другое Activity
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном...

2
Pablito
2845 / 2263 / 762
Регистрация: 12.05.2014
Сообщений: 7,931
Завершенные тесты: 1
13.07.2017, 10:29 2
https://www.google.com.ua/search?q=a...localbroadcast
0
shavuz
114 / 120 / 26
Регистрация: 29.01.2014
Сообщений: 596
17.07.2017, 14:22 3
Надо сделать баинд активити к сервису https://developer.android.com/guide/components/bound-services.html
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2017, 14:22

Как из одного Activity перенести фотку в другое Activity?
Собственно необходимо отобразить фотографию в activity2, которую загрузили в activity1 из галереи ...

Как добавить cardview в activity с другой activity?
У меня есть активность(1), куда нужно добавить cardview. в этой же активности есть кнопка(1), при...

Из одного Activity получить значение другого Activity
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new...


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

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

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