Android 프로젝트 실천(5)-기본 클래스 와 도구 클래스 의 실현

Android 프로젝트 개발 은 일반적으로 팀 에서 이 루어 집 니 다.한 팀 이 순조롭게 합작 하여 우수한 프로젝트 를 완성 할 수 있 고 좋 은 인 코딩 습관 이 빠 질 수 없습니다.이곳 의 인 코딩 습관 은 명명 규칙 등 기초 뿐만 아니 라 기초 류 BaseApplication,BaseFragment,BaseActivity 의 정의,공구 꾸러미 도구 류 의 구축 등 도 포함한다.다음은 명명 규칙,기초 류,도구 류 의 실현 과 구축 에 대해 말씀 드 리 겠 습 니 다.
명명 규칙
자바 의 블 로그 에서 도 이름 규칙 을 말 했 습 니 다.안 드 로 이 드 는 자바 로 작 성 했 습 니 다.이름 규칙 은 당연히 같 습 니 다.
가방 이름:모든 알파벳 소문 자.하강 선 포함 은 허용 되 지 않 습 니 다
4.567917.유형 명 과 인터페이스 명:이니셜 대문자,다 단어 이니셜 대문자
4.567917.변수 이름과 방법 명:이니셜 소문 자.다 단어 첫 번 째 단어 이니셜 소문 자,나머지 단어 이니셜 대문자
4.567917.상수 명:단 어 는 모두 대문자 이 고 여러 단어 사이 에 밑줄 로 분리 합 니 다
  • 구성원 변수:보통'mData'입 니 다.소문 자 m+자모 단어 이니셜 대문자..

  • 부분 변수:이니셜 소문 자.다 단어 첫 번 째 단 어 는 이니셜 소문 자 이 고,나머지 단 어 는 이니셜 대문자 이다.이름 을 짓 는 과정 에서 알파벳 맞 춤 법 오류 가 발생 하지 않도록 하고 줄 임 말 등 을 사용 하 며 이름 을 최대한 완전 하 게 하면 다른 사람 이 이름 에서 더 많은 정 보 를 얻 을 수 있 습 니 다
    기초 류
    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();
        }
    }

    좋은 웹페이지 즐겨찾기