일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 김경문
- NC다이노스
- 리뷰
- 데이터베이스
- 블로그
- mysql
- ubuntu 12.04
- 애플
- 단통법
- 우분투
- 인공지능
- 타이젠
- 안드로이드
- 야구
- 뉴스타파
- 문파문파
- 손민한
- python
- Linux
- Tizen
- arm
- NC 다이노스
- 디자인 패턴
- 프로야구
- 해외직구
- 문파문파 공략
- ubuntu
- 조세피난처
- 국정원
- 태그를 입력해 주세요.
- Today
- Total
꿈꾸는 사람.
[Android] Wi-Fi 서비스에서 JAVA Hashmap 사용 예. 본문
1. JAVA Hashmap 개요.
Hashmap은 Key-Value 컨셉인 Map 인터페이스에 기반한 자료구조로 특정 키(Key)로 저장된 값(Value)을 빠르게 찾을 수 있다.
Hashmap은 저장된 순서는 보장하지 않지만 데이터의 저장하고(put) 읽어오는(get) 기능은 일정 시간 내에 결과를 얻을 수 있다.
Hashmap의 사용법은 오라클 공식 자바 사이트나 검색으로 충분히 찾을 수 있다.
이 글은 안드로이드 키캣 버전에서 Wi-Fi 서비스에서 hashmap을 사용하는 예를 설명한다.
2. Android] Wi-Fi 서비스에서 Hashmap 사용 예.
WifiMonitorSingleton 클래스에서 HashMap 정의
안드로이드는 WifiService와 WifiP2pServcie의 서비스를 지원한다.
WifiService는 wlan0, WifiP2pServcie는 p2p0 인터페이스를 WifiMonitor에 등록하여 모니터링한다.
여기서 WifiMonitor는 Singleton 패턴을 사용하므로 WifiMonitorSingleton란 서브클래스는 하나만 생성된다.
이 서브클래스에서 인터페이스 키에 해당하는 WifiMonitor 값을 관리한다.
WifiMonitor.java 파일 내에 아래와 같은 코드로 정의되어 있다.
private static class WifiMonitorSingleton {
...
private HashMap<String, WifiMonitor> mIfaceMap = new HashMap<String, WifiMonitor>();
...
}
WifiMonitor.java 파일 내에 아래와 같은 코드로 정의되어 있다.
private static class WifiMonitorSingleton {
...
public synchronized void registerInterfaceMonitor(String iface, WifiMonitor m) {
mIfaceMap.put(iface, m);
}
...
}
class InitialState extends State {
...
public boolean processMessage(Message message) {
...
switch (message.what) {
1) case CMD_START_SUPPLICANT:
2) if (mWifiNative.loadDriver()) {
...
mWifiMonitor.killSupplicant(mP2pSupported);
3) if(mWifiNative.startSupplicant(mP2pSupported)) {
mWifiMonitor.startMonitoring();
...
4) mWifiMonitor.startMonitoring();
...
private static class WifiMonitorSingleton {
...
public synchronized void startMonitoring(String iface) {
WifiMonitor m = mIfaceMap.get(iface);
...
}
...
}
'IT > Language_Design Patterns' 카테고리의 다른 글
[Java] Swing. 개요. 컨테이너 예제. (0) | 2016.02.25 |
---|---|
[디자인 패턴][퍼사드 패턴] 클라이언트를 복잡한 시스템과 분리. (0) | 2016.01.27 |
[디자인 패턴][어댑터 패턴] (0) | 2016.01.19 |
[디자인 패턴][싱글턴 패턴] 안드로이드 6.0 싱글턴 패턴 예제. (0) | 2016.01.12 |
[디자인 패턴][팩토리 패턴 1] 팩토리 메소드 패턴 (0) | 2016.01.10 |