Я начинаю разработку Android и теперь участвую в обучении.
Я создал простой сервис для тост строки непрерывно.
Я взял две кнопки, чтобы начать и остановить сервис.
Когда я нажимаю кнопку «Пуск», запускается служба, и она непрерывно поджаривает строку.
Но когда я иду, чтобы остановить службу, нажав кнопку остановки, она не остановится.
Он будет непрерывно поджаривать струну.Как остановить фоновое обслуживание?
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
doToast();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
public void doToast()
{
final Handler handler= new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(MyService.this, "hi", 0).show();
handler.postDelayed(this, 3000);
}
}, 3000);
}
}
Это код для запуска и остановки службы
startservice.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(getBaseContext(), MyService.class));
}
});
stopservice.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
stopService(new Intent(getBaseContext(), MyService.class));
}
});
ваша служба остановится, но ваш обработчик еще называется 'Runnable', так что вы должны удалить обратные вызовы в' OnStop() 'или' OnDestroy() ' –
, как сделать это? –
try async task ... –