Тесты E2E с кукловодом: как издеваться только над внешними сервисами?

Вот довольно самодостаточный пример. После 5 секунд появляется красная кнопка.

    public void SetAlarm()
    {
        final Button button = buttons[2]; // replace with a button from your own UI
        BroadcastReceiver receiver = new BroadcastReceiver() {
            @Override public void onReceive( Context context, Intent _ )
            {
                button.setBackgroundColor( Color.RED );
                context.unregisterReceiver( this ); // this == BroadcastReceiver, not Activity
            }
        };

        this.registerReceiver( receiver, new IntentFilter("com.blah.blah.somemessage") );

        PendingIntent pintent = PendingIntent.getBroadcast( this, 0, new Intent("com.blah.blah.somemessage"), 0 );
        AlarmManager manager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));

        // set alarm to fire 5 sec (1000*5) from now (SystemClock.elapsedRealtime())
        manager.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*5, pintent );
    }

Помните, что AlarmManager срабатывает даже тогда, когда приложение не работает. Если вы вызовете эту функцию и нажмите кнопку «Домой», подождите 5 секунд, а затем вернитесь в свое приложение, кнопка станет красной.

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

-1
задан bpereira 7 May 2019 в 20:58
поделиться