나는 이것에 대한 연구를 해왔지만 명확한 대답을 찾지 못했습니다.백그라운드 서비스 프로세스 리 바인딩
기능적 과제는 다음과 같습니다
이가) 버튼 레이아웃 (OK)
B) (START를 표시) IST는 백그라운드 서비스를 시작 클릭으로 활동을 시작 (OK)
C 활동이 종료 될 수 있지만), 배경 서비스 내 알림에서 볼 수있는 백그라운드 프로세스가 여전히)) (실행
D를 확인을 계속해야 (OK)
e) 알림 (확인)에서 작업이 다시 시작됩니다.
f) 작업이 프로세스에 연결되어 해당 작업의 상태를 가져와야합니다. 단순히 서비스가 실행 중인지 확인하고 시작 - 중지 버튼의 레이블을 (b)에서 STOP으로 설정하십시오.
e) 버튼을 누르면 서비스가 중지되어 작동합니다.
내 서비스 LogoTimerService에 대한 연결이 같은 활동에 수행됩니다 : 이력서에
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
// We've bound to LocalService, cast the IBinder and get
// LocalService instance
LogoTimerServiceBinder binder = (LogoTimerServiceBinder) service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};
내가 실제로 연결이 함수를 호출 : 여기
은 몇 가지 세부 사항입니다private void connectLogoTimerService() {
Log.i(tag, "-connecting service");
Intent intent = new Intent(this, LogoTimerService.class);
startService(intent);
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
if (mService!=null)
Log.i(tag, "-SERVICE BOUND");
else
Log.i(tag, "-Service NOT bound");
}
처음 응용 프로그램을 시작할 때 두 번째 (바인딩되지 않음) 메시지가 표시됩니다.
왜 바인딩되지 않습니까? 천천히가는거야? (마치 놀고있는 것처럼 보입니다.)
활동을 파괴하지 않으면 mService가 발견됩니다.
어떻게 상태를 동기화 할 수 있습니까?
서비스를 시작하고 바인딩합니다. 이 올바른지?
나는 (이 사이트에서 찾았 감사) 서비스가이 코드를 사용하여 실행되는 것을 볼 수 있습니다
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if (LogoTimerService.class.getName().equals(
service.service.getClassName())) {
return true;
}
}
return false;
}
는 당신의 도움을 주셔서 감사합니다!
정보가 다시 연결되면 어떤 방법 으로든 되돌릴 수 있습니까? – user929995
먼저 BindService를 호출하면 안드로이드 시스템이 바인딩을 시작하고 완료되면 onServiceConnected가 호출됩니다. 이 시점에서 서비스와 응용 프로그램은 묶여서 갈 준비가되어 있습니다. –
고맙습니다. 작동합니다. – user929995