Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android服务在一段时间后停止_Java_Android_Github_Android Service_Android Fragmentactivity - Fatal编程技术网

Java Android服务在一段时间后停止

Java Android服务在一段时间后停止,java,android,github,android-service,android-fragmentactivity,Java,Android,Github,Android Service,Android Fragmentactivity,我正在使用作为我的项目的一个示例,在锁屏上显示一个片段,但它只在主要活动未被破坏(未从最近的活动中删除)之前工作,有时只工作一段时间,然后它停止在屏幕上显示片段 如何始终运行服务?新的API是否也支持它。在清单中初始化服务,并且您必须在下面的开始按钮中调用服务 Intent i = new Intent(this, AnotherService.class); i.setAction("C.ACTION_START_SERVICE"); if

我正在使用作为我的项目的一个示例,在锁屏上显示一个片段,但它只在主要活动未被破坏(未从最近的活动中删除)之前工作,有时只工作一段时间,然后它停止在屏幕上显示片段


如何始终运行服务?新的API是否也支持它。

在清单中初始化服务,并且您必须在下面的开始按钮中调用服务

Intent i = new Intent(this, AnotherService.class);
        i.setAction("C.ACTION_START_SERVICE");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            startForegroundService(i);
        }
        else
        {
            startService(i);
        }
然后你必须像下面一样启动服务

public class AnotherService extends Service {
static final int NOTIFICATION_ID = 543;
public AnotherService() {
}

@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
}

@Override
public void onCreate() {
    super.onCreate();
   if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O)
        startMyOwnForeground();
    else
        startForeground(1, new Notification());
        
   //your code here
    

   
}

@RequiresApi(Build.VERSION_CODES.O)
private void startMyOwnForeground() {

    String NOTIFICATION_CHANNEL_ID = "example.permanence";
    String channelName = "Background Service";
    NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE);
    chan.setLightColor(Color.BLUE);
    chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);


    NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    assert manager != null;
    manager.createNotificationChannel(chan);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);
    Notification notification = notificationBuilder.setOngoing(true)
            .setContentTitle("App is running in background")
            .setPriority(NotificationManager.IMPORTANCE_MIN)
            .setCategory(Notification.CATEGORY_SERVICE)

            .build();
    startForeground(2, notification);
}

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

    return START_STICKY;
    //return super.onStartCommand(intent, flags, startId);
}


@Override
public void onDestroy() {
    super.onDestroy();
}
如果您完成了服务,那么您必须在您要停止的活动中使用此更改停止按钮代码

stopService(new Intent(YourActivity.this, AnotherService.class));