Android 프로젝트 실천(5)-기본 클래스 와 도구 클래스 의 실현
명명 규칙
자바 의 블 로그 에서 도 이름 규칙 을 말 했 습 니 다.안 드 로 이 드 는 자바 로 작 성 했 습 니 다.이름 규칙 은 당연히 같 습 니 다.
가방 이름:모든 알파벳 소문 자.하강 선 포함 은 허용 되 지 않 습 니 다
4.567917.유형 명 과 인터페이스 명:이니셜 대문자,다 단어 이니셜 대문자
4.567917.변수 이름과 방법 명:이니셜 소문 자.다 단어 첫 번 째 단어 이니셜 소문 자,나머지 단어 이니셜 대문자
4.567917.상수 명:단 어 는 모두 대문자 이 고 여러 단어 사이 에 밑줄 로 분리 합 니 다
부분 변수:이니셜 소문 자.다 단어 첫 번 째 단 어 는 이니셜 소문 자 이 고,나머지 단 어 는 이니셜 대문자 이다.이름 을 짓 는 과정 에서 알파벳 맞 춤 법 오류 가 발생 하지 않도록 하고 줄 임 말 등 을 사용 하 며 이름 을 최대한 완전 하 게 하면 다른 사람 이 이름 에서 더 많은 정 보 를 얻 을 수 있 습 니 다
기초 류
BaseApplication
일반적인 상황 에서 개발 하 는 과정 에서 저 희 는 BaseApplication 계승 애플 리 케 이 션 을 정의 한 다음 에 AndroidManifest 에서 다음 과 같이 변경 합 니 다.
<application android:name=".BaseApplication"<!--【 】 "name" "BaseApplication" 。-->
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
</application>
BaseApplication 에서 우 리 는 일반적으로 다음 과 같은 정 의 를 내 립 니 다.
public class BaseApplication extends Application {
private static String mLock = "LOCK";
private static BaseApplication mApplication;
private BaseApplication() {
}
public static BaseApplication newInstance(){
if(mApplication!==null){
synchronized(mLock ){
if(mApplication!==null){
mApplication = new BaseApplication();
}
}
}
return mApplication;
}
/** * Context * @return Context */
public static Context getContext(){
return mApplication.getApplicationContext();
}
@Override
public void onCreate() {
super.onCreate();
this.mApplication = this;
/* * : , , */
}
}
Point One:BaseApplication 을 정의 하 는 역할 은 이 프로그램 을 시작 할 때 AndroidManifest 에 등 록 된 Application,즉'name'의 값 을 대표 하 는 Application 을 먼저 실행 하 는 것 입 니 다.이 프로그램 을 처음 실행 할 때 데이터 나 다른 것 을 불 러 오고 초기 화 작업 을 해 야 합 니 다.이 때 는 BaseApplication 에서 정의 해 야 합 니 다.(사실 응용 프로그램 을 BaseApplication 이 라 고 정의 하 는 것 도 적합 하지 않 습 니 다.MyApplication 이 더 적합 하 다 고 정의 할 수 있 습 니 다.여 기 는 BaseApplication 을 잠시 사용 합 니 다).Point Two:BaseApplication 과 같은 종류 에서 우 리 는 Application Context 를 얻 는 방법 을 정 의 했 습 니 다.이 유 는 두 가지 가 있 습 니 다.(1)메모리 최적화 입 니 다.애플 리 케 이 션 과 안 드 로 이 드 4 대 구성 요 소 는 모두 Contex 대상 을 가지 고 있다.네트워크 연결,데이터베이스,UI 디자인 등 많은 곳 에서 Context 대상 을 사용 하지만 Context 대상 의 보 유 는 Activity,Service 등 을 메모리 에 계속 존재 시 켜 메모리 소 모 를 차지한다.따라서 Context 를 사용 할 때 는 애플 리 케 이 션 의 Context 를 최대한 사용 해 야 한다.물론 Dialog 등 Activity 의 Context 에 의존 해 야 할 때 우 리 는 사용 할 수 밖 에 없다.2)사용 이 편리 하 다.때때로 우 리 는 클래스 에서 Context 대상 을 사용 해 야 하 는 것 을 자주 만 날 수 있 습 니 다.그러나 이 종 류 는 4 대 구성 요소 도 아니 고 Context 를 포함 하지 않 습 니 다.이때,우 리 는 구조 기 를 통 해 Context 대상 에 들 어 가 려 고 할 수도 있 고,비교적 번거롭다.우 리 는 애플 리 케 이 션 의 Context 를 정적 인 방법 으로 가 져 올 수 있 습 니 다.이렇게 하면 Activity 의 Context 보 유 를 줄 이 고 메모리 도 최적화 할 수 있 습 니 다.
BaseActivity
BaseActivity 의 사용 은 BaseApplication 의 사용 과 똑같다.전에 저희 가'현재 화면 이 어떤 활동 인지 어떻게 알 아 요?'이 블 로그 에는 BaseActivity 가 사용 되 었 다.실제 개발 에서 의 사용 도 비슷 하 다.BaseActivity 는 주로 데이터 저장,초기 화 등 을 합 니 다.여 기 는 더 이상 코드 를 열거 하지 않 습 니 다.그리고 Activity 를 사용 할 때 BaseActivity 를 계승 합 니 다.
BaseFragment
BaseFragment 도 BaseFragment 가 Fragment 를 계승 한 다음 Fragment 를 사용 할 때 BaseFragment 를 계승 한다.
도구 클래스
우리 가 개발 하 는 과정 에서 일부 도 구 를 사용 하 는 것 을 피하 기 어렵다.예 를 들 어 네트워크 상태 획득,dp 전환 px 사이즈 전환,Uri 경로 획득,이미지 압축 등 도구 이다.우 리 는 일반적으로 이 도구 들 을 각각 클래스 로 봉 한 후에'utils'패키지 에 넣는다.이렇게 하면 우 리 는 이 도 구 를 사용 할 때 직접 호출 하여 사용 할 수 있 으 며,자신의 클래스 에서 반복 적 으로 정 의 를 내 릴 필요 가 없다.즉,코드 를 간소화 하고 효율 도 높 일 수 있다.
여기 서 몇 가지 도구 종 류 를 간단하게 열거 합 니 다:Uri 도구:
public class UriUtils {
/** * Uri * @param uri Uri * @return Uri File 。 */
public static File getFilePath(BaseActivity activity,Uri uri) {
String[] proj = {MediaStore.Images.Media.DATA};
Cursor actualimagecursor = activity.managedQuery(uri, proj, null, null, null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String img_path = actualimagecursor.getString(actual_image_column_index);
return new File(img_path);
}
}
Toast 도구:
public class ToastUtils {
/** * Toast * @param content Toast 。 */
public static void showToast(String content){
Toast.makeText(BaseApplication.getContext(), content, Toast.LENGTH_SHORT).show();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.