GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Serivces no Android reinicializando as variáveis

java
android
Tags: #<Tag:0x00007f1864901f68> #<Tag:0x00007f1864901db0>

#1

Eu desenvolvendo um aplicativo teste no qual um Service fica rodando em Background e fica enviando notificações para o celular a cada 10 segundos. Para melhorar o teste eu criei um contador que vai aumentando a cada notificação enviada. O Service funciona quase que perfeitamente, porem, se eu abrir e fechar o APP o contador reinicia pra 1 e eu não faço a menor ideia do porque.
Eu falei em fechar o APP e não minimizar, existe uma grande diferença entre minimizar o APP e fechar, se eu minimizar continua normal porem se eu fechar ele ai sim o contador reinicia.

Classe do serviço:

public class BackgroundService extends Service {

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

public sattic int j = 1;


   @Override
   public void onCreate() {
    new Thread() {
        @Override
        public void run() {
            while (true) {
                NotificationCompat.Builder builder = new NotificationCompat.Builder(BackgroundService.this)
                        .setContentTitle("Notificação: " + j)
                        .setContentText("Texto da notificação: " + j)
                        .setTicker("Texto que aparece ao receber a notificação.")
                        .setBadgeIconType(R.drawable.error)
                        .setSmallIcon(R.drawable.help)
                        .setAutoCancel(true);

                NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                notificationManager.notify(1, builder.build());
                 j++;
                try {
                    Thread.sleep(10000);
                } catch (Throwable e) {
                    Log.create(e);
                }
            }
        }
    }.start();
   }
}

Classe Main:

 public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService(new Intent(getBaseContext(), BackgroundService.class));
    }
}

Resumindo, se eu abrir o aplicativo o contador e as notificações funcionam normalmente, porem se eu fechar o aplicativo o contador reinicia do 1 (as notificações continuam aparecendo porem o contador reinicia). Eu falei em fechar o APP e não minimizar, existe uma grande diferença entre minimizar o APP e fechar, se eu minimizar continua normal porem se eu fechar ele ai sim o contador reinicia.

Eu já tentei colocar a variável do contador dentro da Thread porém não funcionou ele reinicia do mesmo jeito.