如何解决Android服务会在一段时间后停止
我正在使用this code作为我的项目的示例,以便在锁定屏幕上显示一个片段,但是它只能在主要活动没有被破坏(没有从最近的活动中删除)之前起作用,并且有时只起作用一段时间,然后停止在屏幕上显示片段。
我如何一直运行服务?也有新的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));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。