2013년 7월 14일 일요일

Android의 서비스를 이해해보자 (1)MainActivity

안드로이드의 구성 요소 4가지 ( Activity, BR, CP, Service ) 중
오늘은 서비스에 대해 알아봅시다.
Service는 백그라운드에서 실행되며 사용자와 직접적인 상호작용은 하지않는다.
클라이언트에서 어떤식으로 호출하는가에 따라 두 가지로 나뉜다.
1. 백그라운드 데몬 : 일반적으로 흔히 알고있는 백그라운드 서비스 ex)뮤직플레이어
2. 원격호출인터페이스 : 클라이언트를 위해 특정한 기능을 제공하는 역할. 자신의 기능을 메서드로 노출시켜두고 클라이언트는 이 메서드를 호출함으로써 서비스를 이용한다.
ex)다른 패키지에 있는 Activity에서 해당 서비스의 메서드를 호출해 이용할 수 있다
-----------------------------------------------------------------

이 중 이번 글에서 다뤄 볼 예제는 데몬 서비스이다.
우선 작성해야 할 것은
1. Activity를 상속받은 클래스
2. Service를 상속받은 클래스
3. 레이아웃 activity_main.xml
4. AndroidManifest.xml
5. string.xml
을 작업 할 것이다.
-----------------------------------------------------------------
1. Activity

package bit.java39.servicetest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

 TextView textView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

 }

 public void mOnclick(View view) {
  Intent intent;
  if (view.getId() == R.id.newsStart) {
   // 인텐트에 서비스의 클래스 명이 아닌 액션명을 지정했음.
   // 외부에서는 다른 패키지에 속한 클래스를 직접 참조할 수 없으므로 액션명을 사용해야한다.
   // 두 방법의 결과는 동일하다.
   intent = new Intent("bit.java39.servicetest.NEWS");
   // intent = new Intent(this, NewsService.class);
   startService(intent);
   textView = (TextView) findViewById(R.id.textView);
   textView.setText(intent.toString());
   
  } else if (view.getId() == R.id.newsEnd) {
   intent = new Intent("bit.java39.servicetest.NEWS");
   // intent = new Intent(this, NewsService.class);
   stopService(intent);
   textView = (TextView) findViewById(R.id.textView);
   textView.setText(intent.toString());
  }
 }
}

댓글 없음:

댓글 쓰기