2014-02-26 3 views
0
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBoxSync); 
      checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if (isChecked) { 
         startService(new Intent(UltilityActivity.this, SynService.class)); 
        } 
       } 
      }); 

이 확인란을 선택하면 SynService 클래스가 시작됩니다.확인란을 선택하면 Android에서 서비스가 시작됩니다.

공용 클래스 SynService 서비스 {

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

@Override 
public void onCreate() { 
    Log.d(null,"Create Service"); 
    Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onDestroy() { 
    Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onStart(Intent intent, int startid) { 
    Log.d(null,"Start Service"); 
    Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show(); 
} 

}

를 확장하고 이것은 synservice 클래스입니다,하지만 난 체크 한 경우, 서비스가 시작되지 않고 아무 일이 없다. 왜?

두 번째 질문은 서비스가 시작될 때마다 30 분마다 데이터를 동기화하려고합니다. 코드를 입력하고 장치를 종료 할 때까지 계속 반복해야합니다. AndroidMafifest.xml에서 추가로 해결

+0

startService 기능이 내부의 경우 호출되는 경우에 당신이 알고, 더 많은 코드를 작성해야 할 수도 있습니다 (isChecked)? 또한 두 번째 질문에 대해서는 루프를 사용하지 말고 AlarmManager를 사용하고 30 분마다 서비스를 깨우십시오. – Ben

+0

@Ben 네, 서비스가'isChecked' 안에서 시작되지만, 체크 박스가 체크 되어도 서비스를 시작할 수 없다는 것을 알고 있습니다. 두 번째 질문에서 나는 AlarmManager를 시도 할 것입니다. –

+0

체크 박스를 체크했을 때 서비스가 시작되고 isChecked 서비스가 시작되고 있는지 이해할 수 없습니다. onCheckedChanged 리스너는 상자가 선택되거나 선택 취소 될 때만 호출되어야합니다. 서비스가 중지되지 않은 경우 시작은 이후 시간으로 호출되지 않습니다. onStartCommand 만 호출됩니다. – Ben

답변

0

문제는이 코드를

<service android:name="com.example.abc2.SyncService"
android:exported="true" android:label="@string/app_name"> <intent-filter><action android:name="com.example.abc2.SyncService"></action> </intent-filter> </service>

덕분에 파일을 모두

관련 문제