IntentService不受睡眠或模拟器上打do睡的影响

时间:2018-11-13 12:27:16

标签: android android-service intentservice android-intentservice android-wake-lock

我想测试IntentService上的屏幕关闭和打ze模式的效果。

为此,我在Android棉花糖上启动背景IntentService,停用仿真充电器,将仿真器设置为“正在放电”,然后关闭屏幕。 我没有应用任何唤醒锁。但是,我的IntentService永不中断。它只是不断运行,一个onHandleIntent被另一个执行。 我所期望的是,当我关闭屏幕或设备进入休眠状态时,IntentService应该被销毁。这个假设不正确吗? 我的模拟器不能正确模拟睡眠/打do睡,还是为什么我的IntentService不受影响?

public class ExampleService extends IntentService {
    public static final String TAG = "IntentService";

    public ExampleService() {
        super("bla");
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate");
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        Log.d(TAG, "onHandleIntent");
        String input = intent.getStringExtra("inputExtra");

        runInBackground(input);
    }


    private void runInBackground(String input) {
        for (int i = 0; i < 40; i++) {
            Log.d(TAG, input + " " + i);
            SystemClock.sleep(1000);
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }
}

我从IntentService多次启动了这个MainActivity,因此运行了大约 30-60分钟

public void startService(View v) {
    String input = editTextInput.getText().toString();

    Intent serviceIntent = new Intent(this, ExampleService.class);
    serviceIntent.putExtra("inputExtra", input);

    startService(serviceIntent);
}

1 个答案:

答案 0 :(得分:0)

  

我的模拟器不能正确模拟睡眠/打ze吗?   IntentService不受影响?

看来您的仿真器没有转为打ze模式。

  

IntentService应该被销毁

不。服务将被暂停,但不会完全销毁

尝试以下步骤:

  1. 确保您使用Android 6或更高版本配置模拟器
  2. 运行应用,锁定设备
  3. 使用ADB命令启用打ze模式 $ adb shell dumpsys deviceidle force-idle

请参阅有关“打ze模式”和“待机”条件的官方文档 https://developer.android.com/training/monitoring-device-state/doze-standby