Как мы все знаем, Модель памяти Java состоит из данных (или кода), сегментов стека и кучи. Я предполагаю, что то же самое в случае с Android. У меня есть одно монолитное приложение (давайте посмотрим, какая база кода этого приложения слишком большая). Когда я запускаю приложение, действия и фрагменты в приложении загружаются в JVM Dalvik и выгружаются. Когда это так, как это работает со службой? Допустим, у меня есть STICKY_SERVICE
как,
public class CountingNumberService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
for(int i=0; i<100; i++) {
//Do something
}
return Service.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
/**
* This has to do with some inter process communication
*/
return null;
}
}
Так как служба STICKY
, она делает процесс вести себя как постоянный процесс и всегда работает. Теперь подумайте, что я перестал использовать свое приложение, и как пользователь я полагал, что приложение закрыто (я закрываю его или очищаю от последних), но поскольку мой сервис STICKY
, он всегда будет работать, и я предполагаю, что у меня будет следующее воздействие,
- Я бы съел батарейку пользователя.
- Некоторый дополнительный код (кроме службы) будет запущен вместе с приложением (?), Хотя и не уверен. Если в сегменте данных находится все приложение, оно не сможет нормально работать с другим приложением.
Я немного запутался в сервисе STICKY
процесса (огромный монолитный код) и его влияния. Может кто-нибудь объяснить мне это, пожалуйста?