HttpCookie.hasExpired () не работает должным образом на предварительной нуге (24) - PullRequest
0 голосов
/ 07 января 2019

Этот код просто регистрирует список файлов cookie и логическое значение, срок действия файлов cookie которого истек каждые 1 секунду.

Я запускаю этот исходный код с помощью API 23 эмулятора AVD. И тогда HttpCookie.hasExpired() возвращает только false. Тем не менее, все было в порядке, когда я запускаю код в Nougat (24 ~ 25) и Oreo.

class MainActivity : AppCompatActivity() {
    private val TAG = this.javaClass.name

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val cookieStore = CookieManager().cookieStore
        val testCookie = HttpCookie("test", "value")
            .also { it.maxAge = 5 }

        cookieStore.add(URI.create("http://localhost"), testCookie)

        Timer().scheduleAtFixedRate(object : TimerTask() {
            override fun run() {
                Log.i(TAG, "cookies = ${cookieStore.cookies}, expired = ${testCookie.hasExpired()}")
            }
        }, 0, 1000)
    }
}

Я что-то упустил? Это хорошо работает на не Android, используя следующий код.

fun main(args: Array<String>) {
    val cookieStore = CookieManager().cookieStore
    val testCookie = HttpCookie("test", "value")
        .also { it.maxAge = 5 }

    cookieStore.add(URI.create("http://localhost"), testCookie)

    Timer().scheduleAtFixedRate(object : TimerTask() {
        override fun run() {
            println("${Date()} | cookies = ${cookieStore.cookies}, expired = ${testCookie.hasExpired()}")
        }
    }, 0, 1000)
}

1 Ответ

0 голосов
/ 13 июня 2019

Если мы сравним исходный код HttpCookie в API 23 и исходный код HttpCookie в API 24 , мы увидим существенную разницу в поведении в методе hasExpired(), это вероятно, причина этой проблемы.

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