기본 콘텐츠로 건너뛰기

6월, 2016의 게시물 표시

Android N: Quick Settings Tile API

Android N이 새로이 제공하는 Quick Settings Tile API를 이용하여 Quick Settings 영역에 어플의 tile을 추가할 수 있습니다.  아래 화면을 보면 Test tile이 추가되어 있죠. 새로운 Tile을 추가하기 위해서는 TileService 클래스를 구현한 서비스를 구현해 주어야 합니다.
import android.service.quicksettings.TileService;
public class MyTileService extends TileService { ... } 사용자가 해당 tile을 선택 시 동작을 구현하기 위해서는 아래와 같이 TileService method를 구현합니다.
public class MyTileService extends TileService { @Override public void onTileAdded() {       Log.d(LOG_TAG, "onTileAdded");   }

[Android N] Background Optimizations - CONNECTIVITY_ACTION

CONNECTIVITY_ACTION 브로드캐스트는 네트워크 연결 상태 변화를 알려줍니다. LTE 모바일 네트워크에서 Wi-Fi로 변경되는 경우 등이죠. Android 6.0까지는 애플리케이션의 manifest 파일에 CONNECTIVITY_ACTION 브로드캐스트를 등록할 수 있었지만 N 부터는 허용하지 않습니다. 

왜 그럴까요? 네트워크 연결 상태가 변할 때 마다 CONNECTIVITY_ACTION을 받기 위해 등록된 앱들이 실행되면 메모리, 배터리 등의 자원을 낭비하게 되겠죠. 막상 실행된 앱이 할일도 없는데 말이죠. 대신 Android N의 경우 아래 3가지 방법을 이용하여 네트워크 상태 변화를 확인할 수 있습니다.
Context.registerReceiver()로 CONNECTIVITY_ACTION 브로드캐스트를 받도록 등록할 수 있습니다JobScheduler를 이용하여 특정 조건이 되면 JobService의 onStartJob()이 호출 되도록 합니다ConnectivityManager를 이용하여 특정 조건의 네트워크 상태가 되면 콜백이 불리도록 합니다각 방법에 대한 예제 코드를 보죠.
getApplicationContext().registerReceiver(new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { Log.d(LOG_TAG, "onReceive"); } }, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION));
registerReceiver 를 호출하여 CONNECTIVITY_ACTION 브로드캐스트를 받도록 합니다. 네트워크의 상태가 변할 때 마다 onReceive가 호출됩니다. (예: LTE => Wi-Fi로 전환 혹은 Wi-Fi => LTE로 전환). 현재 네트워크의 상태는 Conne…