Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 如何在睡眠模式下运行服务?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有实现位置监听器的服务.现在我的问题是如何确保我的服务即使在睡眠模式下也能捕获位置.我读过有关报警管理器的内容

alarm.setRepeaTing(AlarmManager.RTC_WAKEUP,triggerAtMillis,intervalMillis,operation);

但如何使用它.这是我的代码..任何帮助将不胜感激..
我的服务

public class LOCATIOnCaptureservice extends service implements LOCATIOnListener {
public static int inteval;
java.sql.timestamp createdTime;
LOCATIOnManager LOCATIOnmngr;

@Override
public void onCreate() {
    inteval=10*1000;

    startLOCATIOnListener(inteval);
}

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

private void startLOCATIOnListener(int inteval,String nwProvider) {
    this.LOCATIOnmngr = (LOCATIOnManager)getSystemservice(Context.LOCATION_serviCE);        
        this.LOCATIOnmngr.requestLOCATIOnupdates(LOCATIOnManager.GPS_PROVIDER,inteval,this);
}   

public void onLOCATIOnChanged(LOCATIOn LOCATIOn) {
    String status="c",S=null;
    double longitude,lattitude,altitude;
    g_currentBestLOCATIOn = LOCATIOn;
    createdTime = new timestamp (new java.util.Date().getTime());    
         longitude=LOCATIOn.getLongitude();
         lattitude=LOCATIOn.getLatitude();
         altitude=LOCATIOn.getAltitude();
         //use this
         }
  }                              
  public void onProviderDisabled(String provider) {}                            
  public void onProviderEnabled(String provider) {}                             
  public void onStatusChanged(String provider,int status,Bundle extras) {}

}

解决方法

如果您想确保操作系统不会杀死/回收您的服务,您需要将其作为前台服务.认情况下,所有服务都是后台服务,这意味着当OS需要资源时它们将被终止.有关详细信息,请参阅此 doc

基本上,您需要为您的服务创建一个通知,并指出它是前台.这样,用户将看到持久通知,因此他知道您的应用正在运行,并且操作系统不会终止您的服务.

以下是@R_197_9937@通知(在您的服务中执行此操作)并使其成为前台的简单示例:

Intent intent = new Intent(this,typeof(SomeActivityInYourApp));
PendingIntent pi = PendingIntent.getActivity(this,intent,PendingIntent.FLAG_updatE_CURRENT);

NotificationCompat.builder builder = new NotificationCompat.builder(this);

builder.setsmallIcon(resource.Drawable.my_icon);
builder.setTicker("App info String");
builder.setContenTintent(pi);
builder.setOngoing(true);
builder.setOnlyAlertOnce(true);

Notification notification = builder.build();

// optionally set a custom view

startForeground(serviCE_NOTIFICATION_ID,notification);

请注意,上述示例是基本的,不包含取消通知代码等.此外,当您的应用程序不再需要该服务时,它应该调用stopForeground以删除通知并允许您的服务被杀死,不这样做是浪费资源.

@H_618_36@

大佬总结

以上是大佬教程为你收集整理的android – 如何在睡眠模式下运行服务?全部内容,希望文章能够帮你解决android – 如何在睡眠模式下运行服务?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。