Submit Search
Android Lecture #03 @PRO&BSC Inc.
0 likes
667 views
Yuki Higuchi
2012/03/14 に株式会社 PRO&BSC にて行った Android 研修の資料 #3 です。
Education
Technology
Business
Read more
1 of 16
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
More Related Content
PDF
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
CODE BLUE
PPTX
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
PDF
Ajax 応用
Katsuyuki Seino
PDF
Ecmascript2015とその周辺について
豊明 尾古
PDF
Androidの通信周りのコーディングについて
Shoichi Takagi
PDF
Jetpack datastore入門
furusin
PDF
Apache Torqueについて
tako pons
PDF
Spockの基礎
Kiyotaka Oku
リナックスに置ける様々なリモートエキスプロイト手法 by スクハー・リー
CODE BLUE
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
Ajax 応用
Katsuyuki Seino
Ecmascript2015とその周辺について
豊明 尾古
Androidの通信周りのコーディングについて
Shoichi Takagi
Jetpack datastore入門
furusin
Apache Torqueについて
tako pons
Spockの基礎
Kiyotaka Oku
What's hot
(20)
PDF
DOMイベントの基礎から深淵まで
Masayuki Nakano
PDF
Clojure
yshigeru
PDF
Tezos Hands on 2019-06-15 Exercise (Japanese)
Jun Furuse
PDF
Valhalla Update JJUG CCC Spring 2019
David Buck
PDF
Synthesijer hls 20150116
Takefumi MIYOSHI
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
PPTX
ActiveResourceが面白すぎる件
Kazuki MATSUMOTO
PDF
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumilab
PDF
Composable Callbacks & Listeners
Taisuke Oe
PDF
Paging Libraryの利用をやめたいお気持ち表明
furusin
PDF
About Jobs
Shinichi Kozake
PDF
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Takefumi MIYOSHI
PDF
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
PDF
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
PDF
traitを使って楽したい話
infinite_loop
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
PDF
LINQソースでGO!
Kouji Matsui
PDF
Goの文法の実例と解説
Ryuji Iwata
PDF
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
PDF
Unit test in android
Tatsuya Maki
DOMイベントの基礎から深淵まで
Masayuki Nakano
Clojure
yshigeru
Tezos Hands on 2019-06-15 Exercise (Japanese)
Jun Furuse
Valhalla Update JJUG CCC Spring 2019
David Buck
Synthesijer hls 20150116
Takefumi MIYOSHI
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
ActiveResourceが面白すぎる件
Kazuki MATSUMOTO
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumilab
Composable Callbacks & Listeners
Taisuke Oe
Paging Libraryの利用をやめたいお気持ち表明
furusin
About Jobs
Shinichi Kozake
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Takefumi MIYOSHI
PHP5.5新機能「ジェネレータ」初心者入門
kwatch
「Html sql」で図書館hpにアクセスしてみよう
Kentaro Matsui
traitを使って楽したい話
infinite_loop
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
LINQソースでGO!
Kouji Matsui
Goの文法の実例と解説
Ryuji Iwata
Javaセキュアコーディングセミナー東京第3回演習の解説
JPCERT Coordination Center
Unit test in android
Tatsuya Maki
Ad
Viewers also liked
(9)
PDF
Android Lecture #02 @PRO&BSC Inc.
Yuki Higuchi
PDF
Android Lecture #04 @PRO&BSC Inc.
Yuki Higuchi
PDF
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
PDF
AOZORAYOMITE and Intent
Yuki Higuchi
PDF
AozoraYomite @InfoTalk 2012/12/21
Yuki Higuchi
PDF
Programmer @jc-21 2014/03/29
Yuki Higuchi
PDF
カジュアルにMongo dbのbackup機能説明
Masakazu Matsushita
PDF
月間10億pvを支えるmongo db
Yuji Isobe
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Stanford GSB Corporate Governance Research Initiative
Android Lecture #02 @PRO&BSC Inc.
Yuki Higuchi
Android Lecture #04 @PRO&BSC Inc.
Yuki Higuchi
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
AOZORAYOMITE and Intent
Yuki Higuchi
AozoraYomite @InfoTalk 2012/12/21
Yuki Higuchi
Programmer @jc-21 2014/03/29
Yuki Higuchi
カジュアルにMongo dbのbackup機能説明
Masakazu Matsushita
月間10億pvを支えるmongo db
Yuji Isobe
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Stanford GSB Corporate Governance Research Initiative
Ad
Similar to Android Lecture #03 @PRO&BSC Inc.
(20)
PDF
Android4.2徹底解剖!
leverages_event
ODP
はじめてのAndroid開発
Katsumi Honda
PDF
日本Androidの会 中国支部資料
Masafumi Terazono
PDF
Tokyo GTUG Bootcamp2010
Takashi EGAWA
PDF
SHARPのエコ技を実装してみた
android sola
PDF
夜子まま塾講義10(画面の呼び出し)
Masafumi Terazono
ODP
OSC2011 Androidハンズオン
Katsumi Honda
PDF
Android カスタムROMの作り方
Masahiro Hidaka
PDF
Android api-levels
Kazuaki Ueda
PDF
アプリリリース後に後悔しないための20のこと
leverages_event
PPTX
初めてのAndroid開発
tanihiro
PDF
函館IKA ICS開発情報
Masahiro Wakame
PPT
Android Hacks - 合宿 Activity
Masanori Ohkawara
PDF
Android gameprogramming
Masahiro Hidaka
PPTX
日本Androidの会のハンズオンセミナー資料(20130315)
eijikushida
PPTX
学生向けAndroid勉強会(入門編)
Itsuki Kuroda
PPTX
Using the Fragments(Android)
Teruaki Kinoshita
PDF
みゆっき☆Think#3 「androidに触ってみるよ!」
techtalkdwango
PDF
Android0422
takahiko_takahashi
PPTX
勉強会資料Out ofmemory
Nao Fujita
Android4.2徹底解剖!
leverages_event
はじめてのAndroid開発
Katsumi Honda
日本Androidの会 中国支部資料
Masafumi Terazono
Tokyo GTUG Bootcamp2010
Takashi EGAWA
SHARPのエコ技を実装してみた
android sola
夜子まま塾講義10(画面の呼び出し)
Masafumi Terazono
OSC2011 Androidハンズオン
Katsumi Honda
Android カスタムROMの作り方
Masahiro Hidaka
Android api-levels
Kazuaki Ueda
アプリリリース後に後悔しないための20のこと
leverages_event
初めてのAndroid開発
tanihiro
函館IKA ICS開発情報
Masahiro Wakame
Android Hacks - 合宿 Activity
Masanori Ohkawara
Android gameprogramming
Masahiro Hidaka
日本Androidの会のハンズオンセミナー資料(20130315)
eijikushida
学生向けAndroid勉強会(入門編)
Itsuki Kuroda
Using the Fragments(Android)
Teruaki Kinoshita
みゆっき☆Think#3 「androidに触ってみるよ!」
techtalkdwango
Android0422
takahiko_takahashi
勉強会資料Out ofmemory
Nao Fujita
Android Lecture #03 @PRO&BSC Inc.
1.
ライフサイクル と非同期処理 2012/03/14(水)@PRO&BSC
樋口 祐紀 (higuchi_yuki@probsc.jp)
2.
本日の内容 • Androidアプリは良くおちます –回転すると...
–Homeボタン押してほっておくと... • バックエンドはクラウド!というアプリは たくさんあります –ダウンロード処理 –プログレスダイアログ処理 2
3.
エミュレータの使い方
4.
ショットカットで操作してみましょう
操作 ショートカット 画面の回転 (前へ) Ctrl + F11 画面の回転(次へ) Ctrl + F12 ネットワーク切替 F8 フルスクリーンモード Alt + Enter トラックボール F6 トラックボール Delete (キー押下中) 4
5.
DDMSの使い方 Dalvik Debug
Monitor
6.
スクリーンショットや着呼が可能 • C:¥android¥android-sdk¥tools¥ddms.bat
– キャプチャ – ログ – 接続リセット – 着呼 6
7.
ライフサイクルとは?
8.
ライフサイクル
モデル • Android端末にど のような操作を行う と、どのような経路 をたどるか?を常に 意識しましょう! 8
9.
package jp.probsc.test;
public void onPause() { super.onPause(); import android.app.Activity; Log.i("trace", “5. onPause"); import android.os.Bundle; } import android.util.Log; public void onStop() { public class MainActivity super.onStop(); extends Activity { Log.i("trace", “6. onStop"); public void onCreate(Bundle state) { } super.onCreate(state); public void onDestroy() { Log.i("trace", “1. onCreate"); super.onDestroy(); } Log.i("trace", “7. onDestroy"); public void onStart() { } super.onStart(); public void onRestoreInstanceState(Bundle state) { Log.i("trace", “2. onStart"); super.onRestoreInstanceState(state); } Log.i("trace", “8. onRestoreInstanceState"); public void onRestart() { } super.onRestart(); public void onSaveInstanceState(Bundle state) { Log.i("trace", “3. onRestart"); super.onSaveInstanceState(state); } Log.i("trace", “9. onSaveInstanceState"); public void onResume() { } super.onResume(); public void onUserLeaveHint() { Log.i("trace", “4. onResume"); super.onUserLeaveHint(); } Log.i("trace", “10. onUserLeaveHint"); } } 9
10.
ログ出力と基に表を埋めてみましょう (1) 起動
(2) Back キー (3) Home キー 1. onCreate 2. onStart 4. onResume (4) 回転 (5) 着呼 (6) (3) 後、アイコンタップ (7) 履歴から他アプリ起動 (8) 小メモリにてHomeキー (9) (8) 後、アイコンタップ 10
11.
画面回転に対応するには? • 縦、横のそれぞれでレイアウトファイルを分ける
画面の大きさによって分けるには「layout-hdpi / layout-mdpi / layout-ldpi」などとします。 具体的な解像度に対応するには「layout-480x320 / layout-854x480」などとします。 • 画面向きを固定する <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait"> 縦向固定 <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape"> 横向固定 11
12.
画面固定して destory 呼ばれなくするには? ...
(省略) ... AndroidManifest.xml <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"> ... (省略) ... ... (省略) ... MainActivity.java public class MainActivity extends Activity { ... (省略) ... public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i(“trace”, “onConfigurationChanged called"); } } ... (省略) ... 12
13.
Web APIの利用
14.
← こんな Toast
が表示され 郵便番号検索 れば成功です。 API の利用 「zip.php?zn=9800014」の部分を変更し て結果が変わるか確かめてみましょう。 HttpURLConnection http = null; String city = InputStream in = null; lineStr.substring( try { lineStr.indexOf("city=¥"") + 6, // HTTP GETにてデータを取得 lineStr.indexOf( URL url = new URL( "¥" />¥n<value address=")); "http://zip.cgis.biz/xml/zip.php?zn=9800014"); Toast.makeText(this, city, http = Toast.LENGTH_LONG).show(); (HttpURLConnection)url.openConnection(); } http.setRequestMethod("GET"); } http.connect(); } in = http.getInputStream(); catch (Exception ex) { } // XML の city 属性の値を取得 finally { byte[] line = new byte[1024]; try { while (true) { if (http != null) http.disconnect(); int size = in.read(line); if (in != null) in.close(); if (size <= 0) break; } catch (Exception e) { String lineStr = new String(line); } if (lineStr.contains("city=")) { } ネットにアクセスするため、AndroidManifest.xmlに下記パーミッションを追加しましょう <uses-permission android:name="android.permission.INTERNET" /> 14
15.
非同期処理
protected Long doInBackground( String... params) { AsyncTask for (int i = 0; i < 10; i++) { if (isCancelled()) break; ... (省略) ... SystemClock.sleep(1000); publishProgress((i + 1) * 10); public void onCreate(Bundle state) { } super.onCreate(state); return 0L; new MyAsyncTask().execute(""); } } protected void onProgressUpdate( Integer... values) { public class MyAsyncTask extends dialog.setProgress(values[0]); AsyncTask<String, Integer, Long> { } ProgressDialog dialog; protected void onCancelled() { protected void onPreExecute() { dialog.dismiss(); dialog = new ProgressDialog(MainActivity.this); new AlertDialog.Builder(MainActivity.this) dialog.setTitle("Loading data..."); .setMessage("キャンセル") dialog.setProgressStyle( .setPositiveButton("OK", null).create().show(); ProgressDialog.STYLE_HORIZONTAL); } dialog.setOnCancelListener( new OnCancelListener() { protected void onPostExecute(Long result) { public void onCancel(DialogInterface arg) { dialog.dismiss(); MyAsyncTask.this.cancel(true); new AlertDialog.Builder(MainActivity.this) } .setMessage("完了!") }); .setPositiveButton("OK", null).create().show(); dialog.setMax(100); } dialog.setProgress(0); } dialog.show(); } ... (省略) ... 15
16.
本日の課題 • じゃんけんゲームの改善 –
画面回転しても影響がないようにライフサイクルの観 点から修正しましょう – メモリ領域が足りなくなっても破棄されないように修正 しましょう • EditTextに郵便番号を入力し、Buttonを押下 にて「AsyncTask + 郵便番号検索API」を起 動し、町の名前をTextViewに表示しましょう 16
Download