위젯이있는 응용 프로그램을 빌드 중이며 위젯에 단추가 있으면 IntentService가 시작됩니다. onHandleIntent()는 일부 코드를 실행 한 다음 처리기를 통해 건배를 시작합니다. 위젯의 버튼을 클릭하면 토스트가 표시되고 onHandleIntent가 완료되었음을 알 수 있습니다. 하지만 백그라운드 서비스를 볼 때 나는 여전히 내 앱을 본다.onHandleIntent가 완료된 후에도 IntentService가 백그라운드에서 실행됩니다.
사용자가 앱을 항상 백그라운드에서 실행하고 내 소중한 RAM을 낭비 할 때 매우 짜증이납니다. 내 위젯이 업데이트되지 않기 때문에 내 위젯을 백그라운드에서 실행할 필요가 없습니다 (xml의 업데이트 속도는 0입니다).
그럼 서비스가 아직 실행 중입니까? 어떻게 그걸 막을 수 있니?
IntentService 코드 :
public class WidgetCheckService extends IntentService {
private int mAppWidgetId;
Handler mHandler = new Handler();
public SalaryWidgetCheckService(String name) {
super("laceService");
}
public SalaryWidgetCheckService() {
super("laceService");
}
@Override
protected void onHandleIntent(Intent intent) {
// Badass code
mHandler.post(new DisplayToast(getString(R.string.widget_service_check_in_success_toast_text).replace("LACE", lace)));
else mHandler.post(new DisplayToast(getString(R.string.widget_service_check_out_success_toast_text).replace("LACE", lace)));
}
private class DisplayToast implements Runnable{
String mText;
public DisplayToast(String text){
mText = text;
}
public void run(){
Toast.makeText(WidgetCheckService.this, mText, Toast.LENGTH_SHORT).show();
}
}
}
감사합니다, Elad.
확인해 주셔서 감사합니다. – Elad92