2017-03-04 30 views
0

后,这是服务,我想在后台创建即使应用程序被终止

public class CustomMyService extends Service { 

    public CustomMyService() { 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     return START_STICKY; 
    } 

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

    @Override 
    public void onTaskRemoved(Intent rootIntent) { 
     Intent intent = new Intent("com.android.ServiceStopped"); 
     sendBroadcast(intent); 
    } 
} 

清单文件运行于运行Android应用程序服务

<service android:name=".CustomMyService"> 
      <intent-filter android:priority="1000"> 
       <action android:name="android.location.PROVIDERS_CHANGED"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </service> 

敬请有人让我知道。我做了所有谷歌和YouTube的搜索,没有任何工作。

我使用红米注3,其中我有一个选项称为自动启动,如果我给这个应用程序的自动启动权限,服务在后台运行。

但是这个选项在许多其他的android智能手机中并不存在,所以应用程序终止时应用程序服务将被终止。

请让我知道服务如何运行,即使应用程序终止。

+0

写一个私有的类方法与你希望你的服务来执行,并从'onStartCommand称之为()'的代码。除非需要某些东西来初始化服务,否则构造函数不是必需的。 –

回答

1

使用AlarmManager来唤醒您的服务时间。因为服务将在应用程序终止时停止。它需要再次撤销,并且警报管理有助于再次启动服务。

连续服务有很多方法提及,但这些方法在kitkat版本后没有帮助

如果你已经成功地运行你的服务,即使在应用程序终止后,不使用任何闹钟管理器,如调度方法,请让我知道。

+0

报警管理器我试过了,但是确实发生了......当我得到解决方案时,我一定会分享.. –

1

onStartCommand方法和帕拉姆:

START_STICKY

START_NOT_STICKY

START_REDELIVER_INTENT

START_STICKY_COMPATIBILITY

如果不工作,也许你没有系统的权限,以保持服务在后台运行

+0

这些应用如Facebook,whatsapp一直在后台运行如何 –

0

这里是演示:

public class SyncJobService extends Service { 
private String TAG = "mytag"; 
private Timer timer = new Timer(); 
private EventBus evenBus = EventBus.getDefault(); 
public static Date lastSyncDate; 

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

@Override 
public void onCreate() { 
    super.onCreate(); 
    timer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 
      Log.d(TAG, "run: StartSyncEvent"); 
    //    Implement your logic 


      } 
     }, 0, 5 * 60 * 1000);//5 Minutes 

} 

@Override 
public void onDestroy() { 
    Log.d(TAG, "onDestroy: "); 
    super.onDestroy(); 
} 

} 

清单文件:

<service 
     android:name=".service.SyncJobService" 
     android:enabled="true" 
     android:exported="false" /> 
+0

你的服务做了什么,你能告诉我们吗? –

+0

它用于与服务器同步数据。 –

0

在一些手机一样联想,XOLO等被终止背景的第三方应用程序。因此,当应用程序关闭时,它不会允许后台服务。请使用其他手机检查您的服务。 1.使用开始前台服务。 2.在启动粘贴时,如果应用程序终止,服务会自动重新启动以供后台进程使用。

0

将您的服务作为前台进程,以便Android系统将视为前台应用并且不会轻易杀死。使用下面的代码使您的服务成为前台。

StartForeground(100, new Notification()); 

请记住,您需要在服务的ondestroy中调用stopforeground(100)。

相关问题