即使按下主页按钮,如何保持 运行 IntentService

How to keep running an IntentService even when Home button is pressed

我遇到了一个奇怪的问题,当我最小化我的应用程序(按主页按钮)时,我的 IntentService 停止了。 IntentService 中有一个 while 循环,它在 IntentService 中运行良好,直到应用程序在前台 运行。

IntentService class如下:

public class MainService extends IntentService {

    public MainService() {
        super("MainService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        try {
            Instrumentation inst = new Instrumentation();

            while (true) {
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_VOLUME_DOWN);
            }
        } catch(Exception e){
            e.printStackTrace();
        }
    }
}

并从我的 Activity class 中调用它:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void mainButtonClick(View view) {
        Intent intentX = new Intent(this, MainService.class);
        this.startService(intentX);
    }
}

你检查过日志了吗?这不是 IntentService 的问题,问题是您在离开应用程序后无权更改音量。它应该崩溃:

W/System.err: java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission

您需要成为系统应用程序才能使用此权限,因此这在常规 Android 设备上是不可能的。