Страница 4 из 5

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 09 сен 2013, 18:16
Mikhail_dev
Вот к примеру часть нашего манифеста, где это работает
[syntax=xml]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ru.lab_m.whowhere"
android:versionCode="1053"
android:versionName="1.9.1053" >

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="18"/>
....
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name=".App"
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.whowhere"
android:label="@string/app_name" >
<service
android:name=".GPSService"
android:process=":remote" >
<intent-filter>
<action android:name=".Service" />
<action android:name="android.intent.action.MEDIA_MOUNTED" />
</intent-filter>
</service>

<receiver
android:name=".BootUpReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...
[/syntax]

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 10 сен 2013, 13:05
Dronja
no-- писал(а):Вот к примеру часть нашего манифеста, где это работает
Спасибо, но один в один прописываю манифест и все равно на 4.0 не работает. Пойду искать бубен )

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 10 сен 2013, 14:54
Mikhail_dev
Может не там ищете? К примеру у меня было так, что в автозагрузке была задействована флешка, которая не могла за 10 секунд смонтироваться и Андроид радостно выгружал сервис. Т.е. другими словами, onCreate должен запуститься за 10 секунд.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 07 ноя 2013, 10:53
Isaev
neoksi писал(а):По поводу второго вопроса, если ты не сохранил данные сервиса перед выключением устройства, то ты потерял данные, так как при выключении устройства все процессы сервисов просто киляются без вызова у них onDestroy.
neoksi писал(а):Я лично сделал отдельный ресивер на событие отключения и в нем вызываю остановку сервиса. А вся процедура сохранения у меня в onDestroy сервиса. Загрузка данных в onCreate.
Что-то я не понял смысла тогда. Если onDestroy не вызывается, как там можно что-то сохранять?

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 30 янв 2014, 12:26
nunuchek
Подскажите, как запускать сервис если приложение было остановлено через Настройки?
(Настройки->Диспетчер приложений->Приложение->Принуд. остановить)

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 30 янв 2014, 13:10
Mikhail_dev
Никак. Только после перезагрузки, если стоит в бутзагрузке приложение.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 30 янв 2014, 13:23
klblk
nunuchek писал(а):Подскажите, как запускать сервис если приложение было остановлено через Настройки?
(Настройки->Диспетчер приложений->Приложение->Принуд. остановить)
Вероятно только перезапуском приложения вручную. Иначе бы начали появляться совсем не убиваемые сервисы, что не есть хорошо.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 30 янв 2014, 14:11
altwin
klblk писал(а):
nunuchek писал(а):Подскажите, как запускать сервис если приложение было остановлено через Настройки?
(Настройки->Диспетчер приложений->Приложение->Принуд. остановить)
Вероятно только перезапуском приложения вручную. Иначе бы начали появляться совсем не убиваемые сервисы, что не есть хорошо.
они как бы есть. В kit kat это стало доступно(на не рутованных девайсах) не только google, но и простым смертным и называется это Privileged Apps(по сути достаточно поместить приложение в /system/priv-app).

P.S. вы конечно правы, если я убил app он должен быть убитым в моем устройстве, но это всего лишь машина и делает она то, что ей скажут, правда если раньше приходилось применять "хак", теперь google дал такую возможность.

Так же это доступно через "нативный" код не зависимый от Android Framework. И это ооочень активно применяется в различного рода custom прошивках.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 18 апр 2014, 10:21
G_O_R
я все сделал и работает хорошо. но есть проблема. моя программа не отображается в настройках в разделе приложения - запущение. Есть только в разделе кэшированные. это может и хорошо. дело в другом. на некоторых телефонах для энергосбережения есть режимы специальные, вот скажем при нажатии кнопки блокировки все программы выключаются и службы и остается только прием звонков и смс. и когда нажата , то после разблокировки выдает что программа закрыта или ошибка. Подскажите как сделать чтобы не умирал или сказал системе что после выключения блокировки запускался. Спасибо.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 18 апр 2014, 11:32
klblk
1) Можно попробовать WakeLock (http://developer.android.com/intl/ru/re ... eLock.html). Если он не поможет, то вероятно ничего уже сервис не спасет.
2) По включению после блокировки можно попробовать вот этот ресивер: http://stackoverflow.com/questions/1616 ... ot-working

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 18 апр 2014, 11:59
G_O_R
klblk писал(а):1) Можно попробовать WakeLock (http://developer.android.com/intl/ru/re ... eLock.html). Если он не поможет, то вероятно ничего уже сервис не спасет.
2) По включению после блокировки можно попробовать вот этот ресивер: http://stackoverflow.com/questions/1616 ... ot-working
спасибо большое. сейчас попробую

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 03 фев 2015, 10:33
Fry
В уроке написано, что переход в Foreground вызывает вызов соответствующего нотификейшена.

Обязательно ли оно должно вызываться? И можно перейти в Foreground без этого уведомления?

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 04 фев 2015, 06:49
klblk
Fry писал(а):В уроке написано, что переход в Foreground вызывает вызов соответствующего нотификейшена.

Обязательно ли оно должно вызываться? И можно перейти в Foreground без этого уведомления?
На сколько я знаю обязательно. Можно попробовать передать null вместо нотификации, но я не проверял и не знаю будет ли это работать.
Суть в том, что пользователь должен видеть, что у него запущен на устройстве не убиваемый сервис и для этого нужна не убиваемая нотификация. =)

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 10 фев 2015, 14:16
GRAF_COLLIOSTRO
эммм.... неожиданно)
не выложена полная разжёванная инфа от "создадим проект" до "а вот сюда вот воткните вот эту галочку")))
после 99 копи-пастов на сотом заходе пришлось включить мозги)

startService(intent.putExtra("time", 3).putExtra("label", "Call 1") ); - как написано в тексте урока не работает - ругается на интент.

Intent intent = null; компилируется, но в эмуляторе вываливается по нажатии на кнопку

Intent intent = new Intent (this, MyService.class); в тексте урока не хватает вот этого) спасибо, заставили думать)))

на видео подглядел startService(new Intent(this, MyService.class).putExtra ...

короче нужно покурить и выпить пару бутылок, обдумать всё и понять - неделю ковыряю, но с этими потоками пока честно говоря каша(((

а вообще спасибо за уроки! материал бесценен!

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 08 июл 2015, 10:58
ValeriusSR
Привет, народ!
А у меня такой вопрос:
Хочу добиться чтобы иконка моего сервиса постоянно болталась в статус-баре, а сообщение о запущенной службе
было не в нотификации, а в поле "Текущие операции".
На скриншотах примером является приложение ACR.
Его иконка в виде трубки телефона в белом круге.
Сообщение о приложении находится не в поле &quot;Нотификация&quot;, а в поле &quot;Текущие операции&quot;
Сообщение о приложении находится не в поле "Нотификация", а в поле "Текущие операции"
Screenshot_2015-07-08-12-32-40.jpeg (518.69 КБ) 13242 просмотра
Иконка приложения ACR (белый круг с трубкой)
Иконка приложения ACR (белый круг с трубкой)
Screenshot_2015-07-08-12-29-06.jpeg (896.5 КБ) 13242 просмотра
Иначе при стирании нотификаций пропадает и иконка моего сервиса из статуса, а это не есть хорошо...

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 08 июл 2015, 11:41
klblk
ValeriusSR писал(а):Иначе при стирании нотификаций пропадает и иконка моего сервиса из статуса, а это не есть хорошо...
Не должно быть этого если сервис в режиме Foreground запущен.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 08 июл 2015, 12:27
ValeriusSR
klblk писал(а):
ValeriusSR писал(а):Иначе при стирании нотификаций пропадает и иконка моего сервиса из статуса, а это не есть хорошо...
Не должно быть этого если сервис в режиме Foreground запущен.
Вы правы! Спасибо.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 04 авг 2015, 14:52
mkw
Воспользовался данным уроком. Создал Сервис и бродкас но система не хочет реагировать на событие и вызывать сервис. Кто может скинуть рабочий пример реализации например на action = android.intent.action.BATTERY_CHANGED ?? Буду очень благодарен. В интернете куча примеров перепробовал сервис не запускается.

UPD: Проблему решил ...

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 21 авг 2015, 18:27
Mkay
Здравствуйте. Помогите, пожалуйста, разобраться с функцией автозагрузки. Я уже замучался, кучу статей и советов перечитал, много чего перепробовал, но хоть ты тресни, не срабатывает при загрузке телефона!

Я сделал самый примитив для проверки этой автозагрузки:
AndroidManifest.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.alexrodionov.boottest"
    android:installLocation="internalOnly" >

    <uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>

</manifest>
MyReceiver.java

Код: Выделить всё

package ru.alexrodionov.boottest;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot completed", Toast.LENGTH_LONG).show();
        context.startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
    }
}
MainActivity я так и оставил без изменений с текстом "Hello World".

Проверял на Android 4.0.4 и 4.2.2. Первый раз после установки Activity запускал перед перезагрузкой.
Причем если через консоль отправить
adb shell am broadcast -a android.action.intent.BOOT_COMPLETED ru.alexrodionov.boottest
то ресивер срабатывает, но как дело доходит до реальной перезагрузки - тишина.

Re: Урок 100. Service. IntentService. Foreground. Автозагруз

Добавлено: 21 авг 2015, 22:49
mkw

Код: Выделить всё

<receiver
            android:name=".receiver.BootUpReceiver"
            android:enabled="true"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>