Context.startForegroundService然后没有调用Service.startForeground

时间:2018-08-01 16:03:59

标签: android android-8.0-oreo

这是我的BroadcastReciever类。该课程负责启动电话状态。

代码;

Tabs,[
{ tab1 = {
   Title = tab1name
 }
}
{ tab2 = {
   Title = tab2name
 }
}
{ tab3 = {
   Title = tab3name
 }
}
]

我收到此错误;

public class BroadCastRecieverBoot extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent ıntent) {
        if(Intent.ACTION_BOOT_COMPLETED.equals(ıntent.getAction()))
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                context.startForegroundService(new Intent(context, MyService.class));
                context.startForegroundService(new Intent(context, GPSTracker.class));
            } else {
                context.startService(new Intent(context, MyService.class));
                context.startService(new Intent(context, GPSTracker.class));
            }
        }
    }
}

它现在在Android Oreo上不起作用。我不知道那是什么错误。

1 个答案:

答案 0 :(得分:7)

根据Android 8.0 Background Execution Limits

的官方文档
  

Android 8.0引入了新方法    startForegroundService()在前台启动新服务。   系统创建服务后,该应用将有 5秒   调用服务的 startForeground()方法以显示新服务的   用户可见的通知。 如果应用未调用startForeground()   在此期限内,系统停止服务并声明   应用为ANR。

因此,请确保通过使用服务的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="flexCont"> <div class="flexItem"> <div class="flexItem1"> <p>Place</p> <h3>u &amp; d 4</h3> <a href="http//link/u-d/">sometext bla bla </a><br><a href="http//link/u-d/"><i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i></a> </div> <div class="flexItem2"><img src="https://meme.xyz/uploads/posts/t/l-1229-the-two-states-of-every-programmer.jpg"></div> </div> <div class="flexItem"> <div class="flexItem2"><img src="https://meme.xyz/uploads/posts/t/l-1229-the-two-states-of-every-programmer.jpg"></div> <div class="flexItem1"> <p>Place</p> <h3>d &amp; u 3</h3> <a href="http//link/d-u/">sometext bla bla </a><br><a href="http//link/d-u/"><i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i></a> </div> </div> <div class="flexItem"> <div class="flexItem1"> <p>Place</p> <h3>d &amp; u 2</h3> <a href="http//link/matrimonio-test2/">sometext bla bla </a><br><a href="http//link/matrimonio-test2/"><i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i></a> </div> <div class="flexItem2"><img src="https://meme.xyz/uploads/posts/t/l-1229-the-two-states-of-every-programmer.jpg"></div> </div> <div class="flexItem"> <div class="flexItem2"><img src="https://meme.xyz/uploads/posts/t/l-1229-the-two-states-of-every-programmer.jpg"></div> <div class="flexItem1"> <p>Place</p> <h3>u &amp; d 1</h3> <a href="http//link/matrimonio-test/">sometext bla bla </a><br><a href="http//link/matrimonio-test/"><i class="x-icon x-icon-arrow-right" data-x-icon="" aria-hidden="true"></i></a> </div> </div> </div>方法中的startForeground (int id, Notification notification)来启动正在进行的通知。

注意:定位到API onCreate()或更高版本的应用必须请求权限Build.VERSION_CODES.P才能使用此API。