두 개의 버튼으로 시작하고 중지하는 백그라운드 서비스를 만들어야합니다. 내 서비스는 5 분마다 순환되며 온라인 데이터베이스에서 데이터를 가져옵니다. 나는 IntentService 클래스가 루프에 사용되지 않는 어딘가를 읽었다. onStartCommand를 재정 의하여 START_STICKY를 반환합니다. 내가이 수업에서 그렇게한다면 내 봉사가 시작되지 않는다. 어떻게해야합니까?Android 서비스에 루프가 있습니까?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void start(View view){
startService(new Intent(this, ForegroundService.class));
}
public void stop(View view){
stopService(new Intent(this, ForegroundService.class));
}
}
public class ForegroundService extends IntentService{
private boolean stato;
public ForegroundService(){
super("ForegroundService");
}
@Override
public void onCreate(){
super.onCreate();
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
}
@Override
protected void onHandleIntent(Intent i){
stato = true;
int n=0;
while(stato)
{
Log.i("PROVA SERVICE", "Evento n."+n++);
try {
Thread.sleep(1000);
}
catch (InterruptedException e)
{ }
}
}
@Override
public void onDestroy() {
stato = false;
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
내 마음을 열었습니다! 저는 다음 시간에 AlarmManager를 공부하고 있습니다. Android 6.0+ 정보 setAndAllowWhileIdle() 또는 setExactAndAllowWhileIdle()을 사용할 수 있습니다. 작동 할 때 여기에 새 코드를 대답으로 게시 할 것입니다. 감사합니다! –