Почему TileService ждет несколько секунд, чтобы начать действие? - PullRequest
1 голос
/ 09 июля 2019

Я использую TileService в качестве ярлыка, чтобы открыть Activity моего приложения.Он делает только это и не имеет состояния.

Это выглядит так:


class QuickAccessTileService : TileService() {

    override fun onClick() {
        super.onClick()

        val intent = Intent(this, SlideOverActivity::class.java)
            .addFlags(FLAG_ACTIVITY_NEW_TASK)

        startActivityAndCollapse(intent)
    }
}

и объявлено в AndroidManifest как:

<service
    android:name=".service.QuickAccessTileService"
    android:icon="@drawable/ic_home"
    android:label="@string/tile_label"
    android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">

    <intent-filter>
        <action android:name="android.service.quicksettings.action.QS_TILE" />
    </intent-filter>
</service>

Как этостоит, это работает.Однако, когда мое приложение остановлено, в следующий раз, когда я пытаюсь открыть его через панель быстрых настроек, требуется несколько секунд для запуска действия.

Вотчто я знаю:

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

Кажется, что Service требуется для запуска, прежде чем onClick даже будет выполнен.Это имеет смысл;Service, вероятно, не работает в фоновом режиме, ничего не делая, пока приложение не запущено.Однако это означает, что когда система обнаруживает щелчок по моим Tile, , Service необходимо сначала воссоздать , что занимает слишком много времени.

Я не уверенкуда идти дальше - если мои предположения даже верны.

РЕДАКТИРОВАТЬ: В качестве важного дополнения, я могу воспроизвести это на OnePlus 7 Pro, работающем на Android Pie.Это может быть проблема, связанная с OnePlus, поскольку я не могу воспроизвести ее на эмуляторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...