Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mobile Development - BTalk
Search
Sing Jie Lee
January 09, 2013
Technology
110
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mobile Development - BTalk
Talks about general iOS development and some mobile stats on BTalk - a mobile messenger.
Sing Jie Lee
January 09, 2013
More Decks by Sing Jie Lee
See All by Sing Jie Lee
Infocomm Media Youth Festival 2016 - Career Talk
singjie
0
62
Sprite Kit
singjie
0
66
SiriKit
singjie
0
210
React Native
singjie
1
97
Arduino
singjie
0
48
Software Engineering
singjie
0
63
Advanced Core Data
singjie
0
47
Amazon Echo and Home Integration
singjie
0
120
CS3216 Garena Project X
singjie
0
59
Other Decks in Technology
See All in Technology
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
170
Meet AgentCore Identity Consent Portal
hironobuiga
3
150
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
310
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
230
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
410
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
170
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
170
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
660
AI駆動開発で仕様はどこまで書くべきか? ― 人とAIの責務境界から考える開発プロセスの実践
takahiromatsui
1
290
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
350
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Writing Fast Ruby
sferik
630
63k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Believing is Seeing
oripsolob
1
240
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
Mobile Development Monday, January 21, 13
Agenda • Lifecycle of App • Mobile Design Principles •
Responsive • Memory Management • Network • Maintainability • Other Stuffs Monday, January 21, 13
Lifecycle of an App Monday, January 21, 13
Monday, January 21, 13
Different states of App Active Background Suspended Inactive Not Running
Monday, January 21, 13
Different states of App Active Background Suspended Inactive Not Running
Monday, January 21, 13
Different states of App Active Background Suspended Inactive Not Running
Free up memory Disconnect Reconnect Monday, January 21, 13
Mobile Design Principles • Performance • Responsiveness • Optimal memory
usage • Network • Maintainability Monday, January 21, 13
Responsiveness • Never block the main thread • Always dispatch
complex data handling to background threads • Utilize cache Monday, January 21, 13
Responsiveness • Image Processing User selects a picture Process Image
Main Thread Update UI Background Monday, January 21, 13
Example: Image Processing BBImageLoop::Post(^{ processedImage = ImageProcessor.Process(image); BBUILoop::Post(^{ [self updateUI:processedImage];
}); }); User selects a picture Process Image BBUILoop Update UI BBImageLoop Monday, January 21, 13
Responsiveness • Queues • BBUILoop • BBSoundLoop • BBImageLoop •
BBDLCoreData • BBDBLoop Monday, January 21, 13
Responsiveness • Queues/Operations are cancelable // Sending out Request tcp.requestNearbyBuddies();
handler = BBUILoop::DelayPost(^{ showTimeoutScreen(); }, 5000); ... ... // Response received BBUILoop::Cancel(handler); Monday, January 21, 13
• Queues • Use one queue per subsystem • Know
your queues / threads • Can be cancelled Responsiveness Monday, January 21, 13
Memory Management User Experience Low Memory Usage Monday, January 21,
13
Memory Management User Experience Low Memory Usage App is Active
Monday, January 21, 13
Memory Management User Experience Low Memory Usage App is in
Background/Suspended Monday, January 21, 13
Memory Management • Active? • Use comfortably, but be practical
• Inactive/Background? • Free up memory as much as possible • If not, Apple kills you in background Monday, January 21, 13
Anything lesser than that is a good gauge Memory Management
Apps in Background Monday, January 21, 13
Optimal Memory Usage • Stay SAFE in background • Utilize
system’s memory warning • Ensure no memory leaks Monday, January 21, 13
Use Instruments Monday, January 21, 13
Use Instruments Monday, January 21, 13
Network • Minimize network requests • Timeout is necessary •
Always assume: Network is BAD Monday, January 21, 13
Network Monday, January 21, 13
Network • Bad network : Delays • Prevent sending out
same requests before timeout • Cache responses Monday, January 21, 13
• Bad network : Disconnect • Queue critical requests •
Fast / Safe Queue • Resend requests after reconnection • Requestid is essential Network Monday, January 21, 13
• Fast Queue • Safe Queue Network Client Client Server
Server Monday, January 21, 13
• Fast Queue • Safe Queue Network Client Client Server
Server Chats Daily Life Monday, January 21, 13
Maintainability • Modular Code • Easy to Read • Proper
class/method names Monday, January 21, 13
Maintainability • BTalk is built on modular code Core Network
FileSystem MediaEngine ... DailyLife ... Video Draw Monday, January 21, 13
Added by Daily Life Plugin Monday, January 21, 13
Added by Plugins Monday, January 21, 13
Maintainability Core Network FileSystem MediaEngine ... DailyLife ... Video Draw
Plugin Manager register get Monday, January 21, 13
Some other stuffs la Monday, January 21, 13
Tracker • PivotalTracker • Schedule management tool cum bugs tracker
• Manages schedule for you • Generate Weekly Report Monday, January 21, 13
PivotalTracker Monday, January 21, 13
PivotalTracker • Generated Weekly Report and Schedule Monday, January 21,
13
Insights on Mobile Stats Monday, January 21, 13
Insights on Mobile Stats • Uses Flurry SDK • ~20kB
per session • Client stats collection is needed Monday, January 21, 13
Number of Sessions Monday, January 21, 13
Median Session Length Monday, January 21, 13
Session Length Monday, January 21, 13
User Paths Monday, January 21, 13
User Paths Monday, January 21, 13
Thank You 谢谢 Always write human readable code Monday, January
21, 13