我有一个服务,我从一个Activity开始并绑定到它。在Activity的OnDestroy方法中,我解除了对服务的绑定。服务显示通知,我使用startForeground()将其放在前台。在Service的onUnbind()方法中,我调用了stopself()和stopForeground(true)。但似乎服务并没有停止工作。该应用程序已关闭,通知已消失,但android studio中的android内存监视器仍在继续。为什么会这样?如果我在调用stopForeground()的服务中创建一个函数,并在Activity的OnDestroy之前调用它,那么应用程序就会正常关闭。内存监视器停止。
OnCreate()中的MainActivity:
service = new Intent(MainActivity.this, Service.class);
service.setAction("START");
startService(service);
if(myservice == null)
{
Intent k = new Intent(this,Service.class);
bindService(k, myConnection, Context.BIND_AUTO_CREATE);
}
OnDestroy()中的MainActivity
unbindService(myConnection);
服务OnCreate()
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setAction("new");
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);
Bitmap icon = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("Myservice")
.setTicker("service")
.setContentText("Monitoring")
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(Bitmap.createScaledBitmap(icon, 128, 128, false))
.setContentIntent(pendingIntent)
.setOngoing(true).build();
startForeground(101, notification);
答案 0 :(得分:0)
1)服务在后台运行所以onDestroy()
方法需要在服务上调用方法。
stopSelf();
2)你想关闭应用程序关闭服务然后你需要实现onTaskRemoved()
并调用
stopSelf();
3)并且您想要在活动结束时停止服务,然后onDestroy()
您需要调用的活动方法遵循代码。
@Override
public void onDestroy() {
super.onDestroy();
Intent serviceIntent=new Intent(this,ServiceClass.class);
stopService(serviceIntent);
}