Android Nougat:onHandleIntent调用一次

时间:2018-05-02 18:56:46

标签: java android android-4.4-kitkat intentservice android-7.0-nougat

我们的应用程序正在启动一个事件,可以在按下按钮时下载RSS源并显示媒体。

使用以下代码启动IntentService:

Messenger messenger = new Messenger(new IncomingMessageHandler());
Intent intent = new Intent(getApplicationContext(), RssReaderIntentService.class);

intent.putExtra("Messenger", messenger);

startService(intent);

IntentService也列在下面的AndroidManifest.xml中:

<service android:name=".services.RssReaderIntentService" android:exported="false" />

onHandleIntent方法如下:

@Override
protected void onHandleIntent(Intent workIntent)
{
    LOGGER.trace("onHandleIntent");

    try {
        Messenger remoteMessenger = workIntent.getParcelableExtra("Messenger");
        if (bindData(remoteMessenger))
            readRss();
    }
    catch (Exception e) {
        e.printStackTrace();
    }

    stopSelf();
}

当服务第一次运行时它正确执行并调用 onHandleIntent ,但是,当服务再次运行时,它永远不会到达 onHandleIntent。唯一的方法是被称为 onStartCommand。

我很好奇,如果这是因为Android Nougat与Android KitKat的问题(应用程序在KitKat上正常运行)。我研究了折旧以及可能存在的任何变化,但我没有发现可能导致此问题的任何内容。

修改 应用程序在调试时正确调用 onHandleIntent ,而不是在分离调试器时调用。

编辑#2 我们有三种应用程序运行方式不同的方案。  1.设备运行kitkat,处理器速度比其他两个设备慢,该应用程序完美无缺。  2.使用比第一个设备更快的处理器运行牛轧糖的设备,当没有连接调试器时,应用程序仅运行一次服务但是当连接调试器时,它会持续运行服务。  3.使用三个中最快的处理器运行牛轧糖的设备只运行服务一次,无论是否连接了调试器。

0 个答案:

没有答案