마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

엑티비티가 아닌 클래스에서 Context가 필요할때..

0 추천
현재 엑티비티가 아닌 클래스가 2가지 있습니다.

 

A클래스와 B클래스가 있는데, B클래스에서는 SharedPreferences 를 관리하는 함수들이 있습니다.

그 중에서도 SharedPreferences를 작성하는 함수에는 Context 가 필요합니다.

 

A클래스에서 B클래스에있는 Context가 필요로하는 함수를 호출할때,

A, B 클래스 모두 엑티비티가 아닌 클래스라면, Context는 어떻게 가져와야할까요?

 

그냥 포기하고 엑티비티 클래스에 함수들을 선언해야할까요..? 그러면 실행중에 finish 하는 엑티비티들이 많아서 각 엑티비티마다 함수를 넣어야할것같아서요.. ㅠㅠ
익명사용자 님이 2017년 11월 16일 질문

2개의 답변

0 추천
 
채택된 답변
자바로는 static의 메모리 문제도 있고 해서 개인적으로 Kotlin으로 따로 라이브러리를 만들어서 사용중입니다.

https://github.com/chibatching/Kotpref 에 어떤 원리로 구현이 되어있는지 나와있습니다.

간단하게 설명드리면, Application 클래스를 상속받는 클래스를 만들고, 거기서 application의 context를 관리하고 Preference Model에서 그 context를 사용해서 SharedPreference를 관리하고, Model들은 SharedPreference 관리로부터 자유롭게 되는 구조입니다.
minor (13,710 포인트) 님이 2017년 11월 17일 답변
public class MyApp extends Application {
private Context context;
@Override
public onCreate() {
  super.onCreate();
    this.context = getApplicationContext();
  }
  public Context getAppContext() {
    return this.context;
  }
}

이러한 클래스를 만들어서 엑티비티가 아닌 클래스에서 사용하라는 말씀이 맞나요?

안드로이드 시작한지 한달된 학생이라..ㅠ 혹시 맞을까요?
이렇게 보통 많이 씁니다.
0 추천
생성자나 세터 만들어서 전달 해서 쓰시면 되죠
쿵뿌팬더 (3,440 포인트) 님이 2017년 11월 17일 답변
...