すごく長くなったので、別回答で書きます。
最新のSDKでビルドできるようになったので、いろいろ試したところ気になることがありました。
まず、元のMilkcocoaHelperを一部変更して、実行時間を取れるようにしました。
java
1 3
4 private void createMilkcocoa() {
5 isConnectionLost = false;
6
7 Date startTime1 = new Date();
8
9 milkcocoa = new MilkCocoa(APP_ID + ".mlkcca.com");
10 milkcocoa.setSystemEventListener(this);
11
12 Date endTime1 = new Date();
13 Log.d("MilkcocoaHelper", "create milkcocoa = " + String.valueOf(endTime1.getTime() - startTime1.getTime()));
14
15 Date startTime2 = new Date();
16
17 dataStore = milkcocoa.dataStore(dataStoreName);
18
19 Date endTime2 = new Date();
20 Log.d("MilkcocoaHelper", "create dataStore = " + String.valueOf(endTime2.getTime() - startTime2.getTime()));
21
22 dataStore.addDataStoreEventListener(this);
23 dataStore.on(EVENT_PUSH);
24 dataStore.on(EVENT_SET);
25 dataStore.on(EVENT_SEND);
26 dataStore.on(EVENT_REMOVE);
27 }
以下、アプリのログとadb shell netstatを実行した結果を貼り付けます。
一旦、機内モード
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 32 ::ffff:153.154.165.135:42192 ::ffff:74.125.203.188:5228 FIN_WAIT1
tcp6 0 0 ::ffff:153.248.193.105:50883 ::ffff:173.194.117.197:80 ESTABLISHED
tcp6 0 0 ::ffff:153.248.193.105:39692 ::ffff:173.194.126.229:80 ESTABLISHED
Milkcocoa 利用開始
09-04 15:12:14.549 28325-28325/com.example.locationsample D/MilkcocoaHelper﹕ create milkcocoa = 4035
09-04 15:12:14.558 28325-28325/com.example.locationsample D/MilkcocoaHelper﹕ create dataStore = 8
Milkcocoa 利用停止
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::ffff:153.248.193.105:33811 ::ffff:27.133.134.20:8883 ESTABLISHED
tcp6 0 32 ::ffff:153.154.165.135:42192 ::ffff:74.125.203.188:5228 FIN_WAIT1
tcp6 0 0 ::ffff:153.248.193.105:50883 ::ffff:173.194.117.197:80 ESTABLISHED
tcp6 0 0 ::ffff:153.248.193.105:41935 ::ffff:27.133.134.20:443 ESTABLISHED
tcp6 0 0 ::ffff:153.248.193.105:39692 ::ffff:173.194.126.229:80 ESTABLISHED
アプリは殺さず、Milkcocoa 利用開始
09-04 15:12:55.829 28325-28325/com.example.locationsample D/MilkcocoaHelper﹕ create milkcocoa = 24864
09-04 15:12:55.836 28325-28325/com.example.locationsample D/MilkcocoaHelper﹕ create dataStore = 6
Milkcocoa 利用停止
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::ffff:153.248.193.105:33811 ::ffff:27.133.134.20:8883 ESTABLISHED ←残ってる
tcp6 0 219 ::ffff:153.248.193.105:49359 ::ffff:27.133.134.20:8883 ESTABLISHED ←新しくできてる
tcp6 0 32 ::ffff:153.154.165.135:42192 ::ffff:74.125.203.188:5228 FIN_WAIT1 ←残ってる?
tcp6 0 0 ::ffff:153.248.193.105:45035 ::ffff:64.233.187.188:5228 ESTABLISHED ←新しくできた?
tcp6 0 0 ::ffff:153.248.193.105:50883 ::ffff:173.194.117.197:80 ESTABLISHED
tcp6 0 0 ::ffff:153.248.193.105:41935 ::ffff:27.133.134.20:443 ESTABLISHED
tcp6 0 0 ::ffff:153.248.193.105:39692 ::ffff:173.194.126.229:80 ESTABLISHED
アプリは殺さず、もう一度 Milkcocoa 利用開始しようとしたら…
(※は、AppIDです)
09-04 15:10:22.536 27292-27292/? I/art﹕ Late-enabling -Xcheck:jni
09-04 15:10:22.625 27292-27292/com.example.locationsample D/LocationManagerService﹕ Location Manager service is created.
09-04 15:10:22.631 27292-27292/com.example.locationsample I/System.out﹕ jv2f9dazpy6
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ MqttException (0) - java.net.UnknownHostException: Host is unresolved: ※.mlkcca.com
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38)
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:604)
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ Caused by: java.net.UnknownHostException: Host is unresolved: ※.mlkcca.com
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ at java.net.Socket.connect(Socket.java:865)
09-04 15:10:22.766 27292-27292/com.example.locationsample W/System.err﹕ at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:70)
09-04 15:10:22.767 27292-27292/? W/System.err﹕ at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:82)
09-04 15:10:22.767 27292-27292/? W/System.err﹕ at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:590)
09-04 15:10:22.767 27292-27292/? W/System.err﹕ ... 1 more
09-04 15:10:22.767 27292-27292/? I/System.out﹕ Unable to set up client: MqttException (0) - java.net.UnknownHostException: Host is unresolved: ※.mlkcca.com
09-04 15:10:22.768 27292-27292/? I/art﹕ System.exit called, status: 1
09-04 15:10:22.768 27292-27292/? I/AndroidRuntime﹕ VM exiting with result code 1, cleanup skipped.
上の発生とともにネットワークが死んだ…(アプリも死んだ)
一度、アプリをアンインストールしてみる。
3G回線で復帰後
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::ffff:153.155.243.253:40754 ::ffff:216.58.220.202:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:49961 ::ffff:54.230.87.84:80 TIME_WAIT
tcp6 0 0 ::ffff:153.155.243.253:44209 ::ffff:173.194.72.188:5228 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:39512 ::ffff:173.194.126.135:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:53710 ::ffff:173.194.126.137:80 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:47899 ::ffff:173.194.126.132:80 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:43854 ::ffff:216.58.220.202:443 ESTABLISHED
アプリをインストールして、Milkcocoa 利用開始
09-04 15:23:04.682 5112-5112/com.example.locationsample D/MilkcocoaHelper﹕ create milkcocoa = 6124
09-04 15:23:04.687 5112-5112/com.example.locationsample D/MilkcocoaHelper﹕ create dataStore = 5
インストールし直しても重い…。
Milkcocoa 利用停止
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 153.155.243.253:50664 216.58.221.10:443 TIME_WAIT
tcp6 0 0 ::ffff:153.155.243.253:44133 ::ffff:173.194.126.135:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:60937 ::ffff:27.133.134.20:8883 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:40754 ::ffff:216.58.220.202:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:44209 ::ffff:173.194.72.188:5228 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:39512 ::ffff:173.194.126.135:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:53710 ::ffff:173.194.126.137:80 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:47899 ::ffff:173.194.126.132:80 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:60769 ::ffff:27.133.134.20:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:43854 ::ffff:216.58.220.202:443 ESTABLISHED
LTE復帰後、Milkcocoa 利用開始
09-04 15:25:53.579 6931-6931/com.example.locationsample D/MilkcocoaHelper﹕ create milkcocoa = 1145
09-04 15:25:53.579 6931-6931/com.example.locationsample D/MilkcocoaHelper﹕ create dataStore = 0
Milkcocoa 利用停止
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::ffff:153.155.243.253:44133 ::ffff:173.194.126.135:443 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:40754 ::ffff:216.58.220.202:443 CLOSE_WAIT
tcp6 0 0 ::ffff:153.155.243.253:55024 ::ffff:27.133.134.20:8883 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:44209 ::ffff:173.194.72.188:5228 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:39512 ::ffff:173.194.126.135:443 CLOSE_WAIT
tcp6 1 0 ::ffff:153.155.243.253:53710 ::ffff:173.194.126.137:80 CLOSE_WAIT
tcp6 0 0 ::ffff:153.155.243.253:42572 ::ffff:216.58.220.202:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:42220 ::ffff:27.133.134.20:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:47899 ::ffff:173.194.126.132:80 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:43854 ::ffff:216.58.220.202:443 CLOSE_WAIT
タスクキー押下して、アプリを終了
shell@hammerhead:/ $ netstat
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 ::ffff:153.155.243.253:44133 ::ffff:173.194.126.135:443 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:40754 ::ffff:216.58.220.202:443 CLOSE_WAIT
tcp6 0 0 ::ffff:153.155.243.253:44209 ::ffff:173.194.72.188:5228 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:39512 ::ffff:173.194.126.135:443 CLOSE_WAIT
tcp6 1 0 ::ffff:153.155.243.253:53710 ::ffff:173.194.126.137:80 CLOSE_WAIT
tcp6 0 0 ::ffff:153.155.243.253:42572 ::ffff:216.58.220.202:443 ESTABLISHED
tcp6 0 0 ::ffff:153.155.243.253:47899 ::ffff:173.194.126.132:80 ESTABLISHED
tcp6 1 0 ::ffff:153.155.243.253:43854 ::ffff:216.58.220.202:443 CLOSE_WAIT
残ってたポート8883がいなくなる!