본문 바로가기

Android/Class

안드로이드/Android Application Class 란?


 < 개발 환경 >  
   작성일 : 2013.01.15
   OS 설치 버전 : Windows7 32bit  
   SDK 설치 버전 : 안드로이드 SDK 4.2 (젤리빈) / API LEVEL : 17  
   ADT 설치 버전 : 21   
   Java 설치 버전 : JDK 1.6.0_20 / JRE6 
   이클립스 설치 버전 : Indigo
   테스트단말 : 삼성 갤럭시 S2 4.0.4 (아이스크램 샌드위치)   

 < 프로젝트 적용 > 
   API LEVEL : 8  
   minSdkVersion : 8 
   targetSdkVersion : 8  
   Java Compiler Level : 1.6  
   Text file encoding : UTF-8






안드로이드/Android Application Class 란?




안드로이드에서 Application Class란 어플리케이션 컴포넌트들 사이에서 공동으로 멤버들을 사용할 수 있게 해주는 편리한 공유 클래스를 제공합니다.


어플리케이션 사이의 컴포넌트들이 공동으로 사용할 수 있기 때문에 공통되게 사용하는 내용을 작성해주면 어디서든 context를 이용한 접근이 가능 합니다.


<사용방법>


● 1) Application Class를 상속받는 Class를 만든다.

● 2) AndroidManifest.xml에 Application Class name을 추가 한다.

● 3) 어플리케이션 내의 컴포넌트들 사이에서 context를 이용한 접근이 가능하다. (Data 공유)




1) Application Class 구현

package arabiannight.tistory.com.applicationclass;

import android.app.Application;
import android.content.res.Configuration;

public class ApplicationClass extends Application {
	
	public int jumsu = 100;

	/** onCreate()
	 * 액티비티, 리시버, 서비스가 생성되기전 어플리케이션이 시작 중일때
	 * Application onCreate() 메서드가 만들어 진다고 나와 있습니다. 
	 * by. Developer 사이트 
	 */
	@Override
	public void onCreate() {
		super.onCreate();
	}

	/**
	 * onConfigurationChanged()
	 * 컴포넌트가 실행되는 동안 단말의 화면이 바뀌면 시스템이 실행 한다.
	 */
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
	}

}



2) AndroidManifest.xml




3) 어플리케이션 내의 컴포넌트들 사이에서 context를 이용한 접근 (Data 공유)


3-1) Activity에서의 접근
package arabiannight.tistory.com.applicationclass;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

	private ApplicationClass applicationClass;
	private TextView tvJumsu;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		tvJumsu = (TextView) findViewById(R.id.tv_jumsu);
		
		applicationClass = (ApplicationClass)getApplicationContext();
		
		tvJumsu.setText(applicationClass.jumsu + "");
		
	}

}



3-2) BoardCastReceiver에서의 접근
package arabiannight.tistory.com.applicationclass;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BroadCastReceiverClass extends BroadcastReceiver{

	private ApplicationClass applicationClass;
	
	@Override
	public void onReceive(Context context, Intent intent) {

		applicationClass = (ApplicationClass)context.getApplicationContext();
		
	}

}



3-3) ContentProvider
에서의 접근
package arabiannight.tistory.com.applicationclass;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;

public class ContentProviderClass extends ContentProvider{

	private ApplicationClass applicationClass;
	
	@Override
	public int delete(Uri uri, String selection, String[] selectionArgs) {
		return 0;
	}

	@Override
	public String getType(Uri uri) {
		return null;
	}

	@Override
	public Uri insert(Uri uri, ContentValues values) {
		return null;
	}

	@Override
	public boolean onCreate() {
		
		applicationClass = (ApplicationClass) getContext().getApplicationContext();
		
		return false;
	}

	@Override
	public Cursor query(Uri uri, String[] projection, String selection,
			String[] selectionArgs, String sortOrder) {
		return null;
	}

	@Override
	public int update(Uri uri, ContentValues values, String selection,
			String[] selectionArgs) {
		return 0;
	}
	
}






3-4) Service에서의 접근


서비스에서는 getApplicationContext()를 사용 할 수가 없네요. 좀더 알아 봐야 할 것 같습니다.


Service는 좀더 알아 본 후 추가 하도록 하겠습니다.~!



파일첨부 : 

TestApplicationClass.zip



스크린샷 : 





감사합니다.







  • 누누나나 2013.08.08 14:18

    잘 보고 갑니다.
    늘 큰 도움이 됩니다.^^

  • androider 2013.08.19 16:15

    질문입니다~
    어플리케이션 클래스를 사용하는데요
    사용중엔 문제가 없는데 앱 사용중 홈버튼을 누르고 다른 작업을 하거나 장시간 사용을 안하다가 앱을 다시 이어서 사용하려고 하면
    어플리케이션 클래스 내부의 변수들이 초기화 되는것 같은데 이걸 방지하는 방법은 없을까요?

  • 공유 2014.11.14 11:16

    좋은 자료 잘보고 갑니다.