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

Пробуждение приложения - Android

Восстановить пароль Регистрация
 
_Vertigo_
13 / 13 / 2
Регистрация: 07.09.2013
Сообщений: 158
Завершенные тесты: 1
28.01.2015, 15:31     Пробуждение приложения #1
Здравствуйте. Столкнулся с проблемой пробуждения приложения. Приложение - будильник. В определенный момент времени необходимо запустить активность(АО), на которой воспроизводится мелодия пробуждения и отображается AlertDialog, который останавливает мелодию. Проблема заключается в следующем: в мною написанном варианте, по непонятной мне причине, изначально запускается мелодия, а затем уже запускается сама активность. Так же, в случае, если пользователь в момент запуска будильника, к примеру, сидел в другом приложении, то прежде чем АО запустится, проходит несколько секунд. Как это можно исправить?
Handler'у отправляется сообщение из фонового потока:
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
Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                Log.d(tag, "handleMessage");
 
                Bundle bundle = msg.getData();
                String date = bundle.getString("key");
 
                Intent i = new Intent(Intent.ACTION_MAIN);
                i.setComponent(new ComponentName(context, RemindActivity.class));
                i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP |
                        Intent.FLAG_ACTIVITY_NEW_TASK |
                        Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
                startActivity(i);
 
                PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK |
                        PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, tag);
                mWakeLock.acquire();
                RemindActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
 
                stop();
 
                mWakeLock.release();
            }
        };
Метод stop запускает сервис, который запускает мелодию. Этот же метод и останавливает сервис:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void stop(){
        startService(new Intent(this, AlarmService.class));
 
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        String goodEnd = getResources().getString(R.string.goodEnd);
 
        alertDialog.setMessage(goodEnd);
 
        alertDialog.setPositiveButton(getResources().getString(R.string.ok), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                stopService(new Intent(RemindActivity.this, AlarmService.class));
                dialog.dismiss();
            }
        });
 
        alertDialog.show();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2015, 15:31     Пробуждение приложения
Посмотрите здесь:

Android Обновление приложения
Android Перевод приложения
Android Настройка приложения
навигация приложения Android
Android Приложения - клиенты
Монетизация приложения Android
Android Дизайн приложения
Android Ошибка приложения
Разработка приложения Android
Android Не перемещает приложения
Архитектура приложения Android
Android Локализация приложения

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

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

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