Notice
Recent Posts
Recent Comments
Link
투케이2K
125. (AndroidStudio/android/java) 바인딩 서비스 (bindService) 사용해 모바일 내부 클라이언트 및 서버 백그라운드 작업 실시 본문
Android
125. (AndroidStudio/android/java) 바인딩 서비스 (bindService) 사용해 모바일 내부 클라이언트 및 서버 백그라운드 작업 실시
투케이2K 2021. 4. 28. 18:44/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
[AndroidManifest.xml 파일]
<액티비티 등록 부분>
<activity
android:name=".A_Service"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"/>
<서비스 등록 부분>
<service
android:name=".A_ServiceReceiver"
android:enabled="true"
android:exported="true"
android:stopWithTask="false" />
[JAVA 파일 : A_Service]
//========== [서비스 등록 부분] ==========
public void setServiceStart(){
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_Service > setServiceStart() 메소드 : 서비스 시작 수행]");
Log.w("//===========//","================================================");
Log.d("---","---");
try {
//TODO [일반 서비스 시작 실시]
//startService(new Intent(getApplicationContext(), A_ServiceReceiver.class));
//TODO [바인딩 서비스 시작 실시]
Intent intent = new Intent(A_Service.this, A_ServiceReceiver.class);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);
}
catch (Exception e){
e.printStackTrace();
}
}
//========== [서비스 해제 부분] ==========
public void setServiceStop(){
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_Service > setServiceStop() 메소드 : 서비스 종료 수행]");
Log.e("//===========//","================================================");
Log.d("---","---");
try {
//TODO [일반 서비스 종료 실시]
//stopService(new Intent(getApplicationContext(), A_ServiceReceiver.class));
//TODO [바인딩 서비스 종료 실시 - 액티비티 종료 시 자동 해제됨]
unbindService(serviceConnection);
}
catch (Exception e){
e.printStackTrace();
}
}
[JAVA 파일 : A_ServiceReceiver]
package kr.co.two2k.manager;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import java.util.Random;
public class A_ServiceReceiver extends Service {
//TODO [서비스에서 바인딩을 사용하기 위한 변수 선언]
IBinder mBinder = new A_Service_Binder();
class A_Service_Binder extends Binder {
A_ServiceReceiver getService() { // 서비스 객체를 리턴
return A_ServiceReceiver.this;
}
}
@Override //TODO [서비스가 최초 생성될 때만 호출]
public void onCreate() {
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onCreate() 메소드 : 서비스 최초 생성]");
Log.d("//===========//","================================================");
Log.d("---","---");
}
@Override //TODO [startService()로 서비스를 시작할 때 호출]
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onStartCommand() 메소드 : startService() 서비스 실행]");
Log.w("//===========//","================================================");
Log.d("---","---");
return START_STICKY;
}
@Override //TODO [bindService()로 바인딩을 실행할 때 호출]
public IBinder onBind(Intent intent) {
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onStartCommand() 메소드 : bindService() 바인딩 실행]");
Log.w("//===========//","================================================");
Log.d("---","---");
return mBinder;
}
@Override //TODO [unbindService()로 바인딩을 해제할 때 호출]
public boolean onUnbind(Intent intent) {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onUnbind() 메소드 : unbindService() 바인딩 종료]");
Log.e("//===========//","================================================");
Log.d("---","---");
return true;
}
@Override //TODO [이미 onUnbind()가 호출된 후에 bindService()로 바인딩을 실행할 때 호출]
public void onRebind(Intent intent) {
Log.d("---","---");
Log.d("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onRebind() 메소드 : bindService() 바인딩 재호출됨]");
Log.d("//===========//","================================================");
Log.d("---","---");
}
@Override //TODO [서비스가 소멸될 때 호출]
public void onDestroy() {
Log.d("---","---");
Log.e("//===========//","================================================");
Log.d("","\n"+"[A_ServiceReceiver > onDestroy() 메소드 : stopService() 서비스 종료]");
Log.e("//===========//","================================================");
Log.d("---","---");
}
//TODO [작업 처리 수행 메소드 정의 실시]
public String getServiceJob(){
String returnData = "";
try {
returnData = String.valueOf(new Random().nextInt(10)+1);
}
catch (Exception e){
e.printStackTrace();
}
return String.valueOf(returnData);
}
}//TODO 서비스 종료
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[파일 첨부 : 전체 소스코드]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments