Служба переднего плана убита из-за обновления Android

Обновление : Я не нашел верного решения проблемы. Что я придумал, так это метод автоматического переподключения к предыдущему устройству Bluetooth в любое время, когда соединение потеряно. Это не идеально, но, похоже, работает неплохо. Я хотел бы услышать еще какие-либо предложения по этому поводу.

У меня почти такая же проблема, как и в этом вопросе: Служба убита при удержании блокировки пробуждения и после вызова startForeground , включая устройство ( Asus Transformer), время до остановки службы (30-45 минут), использование блокировки пробуждения, использование startForeground () и тот факт, что проблема не возникает, если приложение открыто, когда экран выключается. выкл.

Мое приложение поддерживает Bluetooth-соединение с другим устройством и передает данные между ними, поэтому оно должно быть постоянно активным, чтобы прослушивать данные. Пользователь может запускать и останавливать службу по своему желанию,и фактически это единственный реализованный мной способ запуска или остановки службы. После перезапуска службы соединение Bluetooth с другим устройством теряется.

Согласно ответу в связанном вопросе, startForeground () «снижает вероятность отключения службы, но не предотвращает ее». Я понимаю, что так оно и есть, однако я видел много примеров других приложений, в которых эта проблема отсутствует (например, Tasker).

Полезность моего приложения будет значительно снижена без возможности запуска службы пока не остановится пользователем. Есть ли способ избежать этого ???

Я вижу это в моем журнале всякий раз, когда служба останавливается:

ActivityManager: No longer want com.howettl.textab (pid 32321): hidden #16
WindowManager: WIN DEATH: Window{40e2d968 com.howettl.textab/com.howettl.textab.TexTab paused=false
ActivityManager: Scheduling restart of crashed service com.howettl.textab/.TexTabService in 5000ms

РЕДАКТИРОВАТЬ: Я также должен отметить, что этого не происходит на другом устройстве, к которому я подключен : HTC Legend работает под управлением Cyanogen

РЕДАКТИРОВАТЬ: Вот вывод служб действий dumpsys оболочки adb :

* ServiceRecord{40f632e8 com.howettl.textab/.TexTabService}

intent={cmp=com.howettl.textab/.TexTabService}

packageName=com.howettl.textab

processName=com.howettl.textab

baseDir=/data/app/com.howettl.textab-1.apk

resDir=/data/app/com.howettl.textab-1.apk

dataDir=/data/data/com.howettl.textab

app=ProcessRecord{40bb0098 2995:com.howettl.textab/10104}

isForeground=true foregroundId=2 foregroundNoti=Notification(contentView=com.howettl.textab/0x1090087 vibrate=null,sound=null,defaults=0x0,flags=0x6a)

createTime=-25m42s123ms lastActivity=-25m42s27ms

 executingStart=-25m42s27ms restartTime=-25m42s124ms

startRequested=true stopIfKilled=false callStart=true lastStartId=1

Bindings:

* IntentBindRecord{40a02618}:

  intent={cmp=com.howettl.textab/.TexTabService}

  binder=android.os.BinderProxy@40a9ff70

  requested=true received=true hasBound=true doRebind=false

  * Client AppBindRecord{40a3b780 ProcessRecord{40bb0098 2995:com.howettl.textab/10104}}

    Per-process Connections:

      ConnectionRecord{40a76920 com.howettl.textab/.TexTabService:@40b998b8}

All Connections:

  ConnectionRecord{40a76920 com.howettl.textab/.TexTabService:@40b998b8}

И вывод активности dumpsys оболочки adb :

* TaskRecord{40f5c050 #23 A com.howettl.textab}

numActivities=1 rootWasReset=false

affinity=com.howettl.textab

intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.howettl.textab/.TexTab}

realActivity=com.howettl.textab/.TexTab

lastActiveTime=4877757 (inactive for 702s)

* Hist #1: ActivityRecord{40a776c8 com.howettl.textab/.TexTab}

    packageName=com.howettl.textab processName=com.howettl.textab

    launchedFromUid=2000 app=ProcessRecord{40bb0098 2995:com.howettl.textab/10104}

    Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.howettl.textab/.TexTab }

    frontOfTask=true task=TaskRecord{40f5c050 #23 A com.howettl.textab}

    taskAffinity=com.howettl.textab

    realActivity=com.howettl.textab/.TexTab

    base=/data/app/com.howettl.textab-1.apk/data/app/com.howettl.textab-1.apk data=/data/data/com.howettl.textab

    labelRes=0x7f060000 icon=0x7f020000 theme=0x0

    stateNotNeeded=false componentSpecified=true isHomeActivity=false

    configuration={ scale=1.0 imsi=0/0 loc=en_CA touch=3 keys=2/1/1 nav=1/2 orien=L layout=0x10000014 uiMode=0x11 seq=6}

    launchFailed=false haveState=true icicle=Bundle[mParcelledData.dataSize=1644]

    state=STOPPED stopped=true delayedResume=false finishing=false

    keysPaused=false inHistory=true visible=false sleeping=true idle=true

    fullscreen=true noDisplay=false immersive=false launchMode=2

    frozenBeforeDestroy=false thumbnailNeeded=false

    connections=[ConnectionRecord{40a76920 com.howettl.textab/.TexTabService:@40b998b8}]

.. .

Proc #15: adj=prcp /F 40e75070 959:android.process.acore/10006 (provider)

          com.android.providers.contacts/.ContactsProvider2<=Proc{40bb0098 2995:com.howettl.textab/10104}

Proc #16: adj=bak+2/F 40bb0098 2995:com.howettl.textab/10104 (foreground-service)

Кажется, они показывают, что служба работает на переднем плане.

77
задан Community 23 May 2017 в 11:47
поделиться