Android Weekly는 매주 발행되는 안드로이드 뉴스레터입니다. 영어 기사를 정독할 시간이 없는 분을 위해 핵심 꼭지를 요약했습니다.
주간 안드로이드 뉴스를 요약해 드립니다. Android Weekly 210 원문도 읽어보세요.
홈 버튼 오버라이드가 필요 없는 이유
누군가 “홈 버튼을 오버라이드 할 수 있나요?”라고 물으면 왜 오버라이드 하고 싶은지 그 의도를 먼저 파악해볼 필요가 있습니다. 아마도 궁극적으로 홈버튼을 오버라이드 하고 싶은 이유는 사용자가 언제 어플리케이션을 나가는지를 알고싶어서겠죠~
다르게 얘기하면 앱이 foreground와 background에 있는지 알 수 있다면, 우리는 현재 앱 상태에 따라 사용자에게 메시지 등을 적절한 방식으로 제시할 수 있을겁니다.
- 앱이 백그라운드에 있다?! ActivityManager#getRunningTask를 사용하지 않고서도 앱이 백그라운드에 있는지 알 수 있는 참신한 방법을 소개합니다!
“TrimMemory”(API 14)를 활용해 앱이 백그라운드에 있는지 확인할 수 있습니다.
public class MyApplication extends Application {
// ...
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level == TRIM_MEMORY_UI_HIDDEN) {
isBackground = true;
notifyBackground();
}
}
// ...
}
- 화면이 꺼졌다?
주의할 점은 위의
onTrimMethod()
가 화면이 꺼지면 불리지 않는다는 것입니다. 그래서 우선 화면이 꺼져있는지 여부를 확인해야겠죠.
public class MyApplication extends Application {
// ...
@Override
public void onCreate() {
super.onCreate();
// ...
IntentFilter screenOffFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (isBackground) {
isBackground = false;
notifyForeground();
}
}
}, screenOffFilter);
}
}
- 앱이 다시 foreground로 돌아왔다? flag나 trim레벨에서 앱이 다시 foreground에 돌아왔는지에 대해서 알 수 있는 방법이 없습니다. 그래서 우리가 사용 할 수 있는 것은 Application#registerActivityLifecycleCallbacks()입니다.
public class MyApplication extends Application {
// ...
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
// ...
@Override
public void onActivityResumed(Activity activity) {
if (isBackground) {
isBackground = false;
notifyForeground();
}
}
// ...
});
}
// ...
}
정리하면 위 방법을 활용하면 홈버튼을 오버라이드하지 않아도 된다는 결론에 이릅니다. 전체 코드는 안돼, 홈버튼은 오버라이드 할 수 없어…근데 그럴필요도 없어~ (No, You Can Not Override the Home Button… But You Don’t Have To!)에서 확인해보세요~
안드로이드 스튜디오 꿀팁
안드로이드 스튜디오는 꽤 많은 유용한 도구들을 포함하는 강력한 IDE입니다. 하지만 그 유용한 도구가 무엇인지 알아야 의미가 있겠죠~ 전문가처럼 안드로이드 스튜디오 사용하기 (Use Android Studio Like a Pro!)에서 제시하는 안드로이드 사용 팁 정리해드립니다!(아래 제시되는 숏컷은 Mac OS기준)
-
키보드 숏컷 사용하기 Presentation Assistant
-
액션 검색 IntellyJ IDE는 액션 검색 도구를 제공합니다. 이름이나 수행으로 액션을 검색할 수 있습니다. 아래 그림처럼 다이얼로그 창에서 어떤 숏컷을 사용할 수 있는지 볼 수 있고 만약 키보드 숏컷이 없다면 이 다이얼로그에서 바로 새로운 숏컷을 생성할 수 있습니다. 필요한 액션을 찾아
option
+Return
을 누르세요! - 스킴 변경
경우에 따라 다른 개발자와 협업을 하거나 공용컴퓨터를 사용한다면 안드로이드 스튜디오의 키맵이나 레이아웃 설정을 수시로 변경해야 할 때가 생깁니다. 이때 할 수 있는 방법은
- 각 개발자가 사용하는 키맵과 기타 세팅 정보를 Action Export Settings로 Export시킴
- 공용으로 사용하게 될 컴퓨터의 안드로이드 스튜디오에서 위 파일을 Import받음
- Quick Switch Scheme을 사용해 편하게 설정을 변경하면서 사용!!!(
Ctrl
+ `) Quick Switch Scheme으로 키맵뿐만 아니라 코드 스타일과 뷰 모드 등을 변경할 수 있습니다.
-
방해 금지 모드(Non-distraction Mode) 기본적으로 안드로이드 스튜디오를 열면 수많은 패널을 확인할 수 있는 구조입니다. 만약 내가 사용하는 부분외에 다른 것을 감추려면
Cmd
+Shift
+F12
를 누르세요!!만약, 여전이 이 화면의 다양한 아이콘과 레이블이 신경쓰이신다면 Distraction Free Mode를 추천합니다! 뷰 메뉴에서 해당모드로 변경이 가능합니다! 물론 위에서 말씀 드린 방법을 사용하실 수 있구요~
- 멀티 커서 안드로이드 스튜디오(다른 IDEA기반 IDE들도)의 주목할만한 특징은 멀티 커서 입니다. 아래 동영상처럼 멀티 커서를 사용해서 한번에 입력하거나 또는 일반 caret에서 할 수 있는 모든 것들을 사용하실 수 있습니다.
- 라이브 템플릿 약어 몇 글자를 치고, 엔터를 누르면 마법처럼 전체 코드 구조가 생성되는 라이브 템플릿을 사용해보세요! Preference - Editor - LiveTemplate 탭을 살펴보세요.
- Postfix operation 하이라이팅이나 리팩토링 퀵 리스트없이도 리팩토링을 할 수 있습니다! 단지 .을 누르고 자동완성되는 리스트에서 원하는 조작을 선택하시면 됩니다.
-
클립보드 버퍼 안드로이드 스튜디오는 여러분의 모든 copy & paste를 기억합니다.
shift
+Cmd
+V
를 사용하면 Preference의 저장된 history개수(기본 5개)만큼의 내용을 보실 수 있습니다. -
스크래치 버퍼 코드에 붙여넣기 전에 외부 텍스트 편집기를 열고 코드를 편집을 한 후 다시 붙여넣기를 하셨던 분들은 이제부터 스크래치 버퍼를 사용해보세요! Find command by name 다이얼로그에서 쉽게 이 버버를 만들 수 있고 또 버퍼를 닫아도 최근 편집한 파일에서 다시 열 수 있습니다.
- 언어 주입(injection) 정규표현식 뿐만 아니라 JSON, SQL같은 언어도 쉽게 입력하실 수 있습니다!
-
Groovy 콘솔 코드 스닙펫이 기대처럼 작동하는지 확인하기 위해 실행해볼 때는 전체 프로젝트를 빌딩할 필요없이 Find Action에서 Groovy Console을 검색하세요!
-
로그캣 기본적으로 에러를 제외한 다른 레벨의 메시지는 흰 글씨로 나타나는데요, 다른 안드로이드 스튜디오의 설정과 마찬가지로 아웃풋 레벨에 따라 다른 글씨 색을 설정할 수 있습니다! 더 보기 편하게 변경해서 사용해보세요.
참고로 Mac OS X사용자분들께 도움이 될만한 추가 정보로, 안드로이드 스튜디오에서 다른 자바 버전을 사용할 수 있습니다. Java 6에서 폰트에 안티에일리어싱이 적용되지만 Java 7+에서는 그렇지 않죠, 또 Java 6으로는 secured updates가 안된다는 점도 주의하세요! 상황에 따라 아래와 같이 STUDIO_JDK환경변수에 JRE버전을 명시하시면 됩니다.
$ export STUDIO_JDK=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk
$ open /Applications/Android\ Studio.app
그 외에도 다양한 링크를 제시하고 있으니 테스트 포함 더 많은 꿀팁이 필요하실 분들은 원문을 참고해주세요:)
오픈소스 라이브러리
-
RxGroups
RxGroups는 RxJava Observable들을 안드로이드 생명주기와 함께 묶어주는 라이브러리로 특히 Retrofit과 함께 사용하면 좋습니다.
뉴스
- 안드로이드 N API 의 최종 버전이 공개되었습니다. http://android-developers.blogspot.kr/2016/06/android-n-apis-are-now-final.html 구글이 4번째 개발지 프리뷰와 함께 안드로이드 N 최종 API를 공개했습니다.
더 읽을 거리
6월 넷째 주의 기사를 Android Weekly 210 영어 원문에서 볼 수 있습니다.
지난 뉴스가 궁금하다면 아래 링크를 참고해 주세요.
- 주간 안드로이드 뉴스 #209 한글 요약
- 주간 안드로이드 뉴스 #208 한글 요약
- 주간 안드로이드 뉴스 #207 한글 요약
- 주간 안드로이드 뉴스 #206 한글 요약
- 주간 안드로이드 뉴스 #205 한글 요약
- 주간 안드로이드 뉴스 #204 한글 요약
- 주간 안드로이드 뉴스 #203 한글 요약
컨텐츠에 대하여
이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.