만족
[Android Studio] 서비스(Service) 본문
[Android Studio] 서비스(Service)
FrontEnd/Android Satisfaction 2017. 6. 30. 03:47Background에서 실행되는 Process.
Activity를 새로 만들면 Manifast에 추가하는 것과 마찬가지로, Service도 만든 후에 Manifast에 추가해주어야 한다.
<service android:name="서비스 클래스명" android:enabled="true">
</service>
서비스 클래스의 생성
Service클래스를 상속하며, 쓰레드 사용을 위해 Runnable 인터페이스를 implements 한다.
public class ExService extends Service implements Runnable {...}
Runnable는 인터페이스이므로, onBind()와 run()메소드가 반드시 정의되어야만 한다.
예를 들어 클래스를 정의하면
public class ExService extends Service implements Runnable {
public static final String TAG="ExService";
private int count=0;
private boolean flag=true;
Thread thread;
public void onCreate(){
super.onCreate();
thread=new Thread(this);
thread.start();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void run() {
while(flag){
Log.i(TAG, new Integer(count).toString());
count++;
try {
thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void onDestroy(){
super.onDestroy();
flag=false;
}
}
과 같이 정의할 수 있다.
onCreate()는 서비스가 시작될 때, 실행되는 메소드이다.
Service클래스로부터 상속받아 오버라이드 한 것이며, 이 부분에서 쓰레드를 객체화하고 시작해 준다.
onDestroy()는 서비스가 중지될 때 실행되는 메소드이다.
이 부분을 오버라이드하지 않으면, stopService()를 이용하여 Service를 종료시켜도 쓰레드는 계속 동작하게 된다.
서비스의 사용
액티비티 클래스의 onCreate() 메소드에서
Intent 객체를 만들고, startActivity(intent); 하면 서비스의 시작이고
stopActivity(intent); 하면 서비스의 종료이다.
Intent service=new Intent(this, ExService.class);
startService(service); //서비스 시작
stopService(service); //서비스 종료
'FrontEnd > Android' 카테고리의 다른 글
[Android Studio] 프래그먼트(Fragment) (0) | 2017.06.30 |
---|---|
[Android Studio] 권한(Permission) 부여 (0) | 2017.06.30 |
[Android Studio] 브로드캐스트 수신자(BroadCast Receiver) (0) | 2017.06.30 |
[Android Studio] 뒤로가기 버튼을 두번 눌러 액티비티 종료하기 (0) | 2017.06.30 |
[Android Studio] ActivityNotFoundException: Unable to find explicit activity class 에러 해결 (0) | 2017.06.30 |
Comments