2

一旦我得到 BOOT_COMPLETE 意图,我想开始服务。在 HTC 资源管理器中,有 2 个重启选项,分别是“poweroff”和“restart”。当我使用“重启”时,我得到了正确的 BOOT_COMPLETE 意图。但是当我使用'poweroff'时没有得到 BOOT_COMPLETE 意图,所以我无法启动服务。只有在 HTC 重启后我才能得到他们的任何意图吗?

我一直在谷歌上冲浪,找不到任何提示。我被卡住了,请帮帮我

<action android:name="android.intent.action.BOOT_COMPLETED"/>我在清单中使用了这个代码但没有用

提前致谢

4

1 回答 1

9

一些 HTC 设备可以启用“快速启动”功能,该功能更像是深度休眠而不是真正的重启,因此不应给出 BOOT_COMPLETE 意图。还要确保该应用程序未安装在 SD 卡上,因为它可能不会因此收到 BOOT_COMPLETED。

这也可能很有趣:

http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

http://arthurfmay.blogspot.jp/2011/06/broadcastreceiver-bootcompleted-and.html

尤其是在提到“快速启动”选项的地方:

http://groups.google.com/group/android-developers/browse_thread/thread/56562e4de4919dc6

编辑:

如何简单地使用:

Intent.ACTION_SCREEN_ON

然后您可以检查服务是否正在运行:

public static boolean ServiceRunning(Context cx) 
{   ActivityManager manager = (ActivityManager) cx.getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
    {   if ("<<<service name goes here>>>".equals(service.service.getClassName()))
        {   return true;
        }
    }
    return false;
}

如果它不只是启动它:

public static void ServiceCheck(Context cx)
{   if(ServiceRunning(cx) == false)
    {   Intent svc = new Intent(".<<<Servicename>>>");
        cx.startService(svc);
        Log.i("Service-Check","Service Starting");
    }
    else
    {   Log.i("Service-Check","Service Existing");
    }
}   
于 2012-05-02T10:24:13.970 回答