IM ϵy(tng)w

ψDʾ˱·һ׳ IM ϵy(tng)һϢ··ɗlLBͨϢ_rϢȕДϢ·ǷϢ·̎ڴB(ti)Ϣ(yu)ȏϢ·°l(f)͑t·ɵͷ·°l(f)
C·漰Ϣ··ɗl·ı@ɗl·ʹÈIJͬϳCͬԸвͬČһx
·ıҪ
TCP Socket Bӽ֮κ̎@BӕLrgڲҿÆǷԭЃc
һĬJSocket Bӟor̽y·Įrʹ Socket Čԅ(sh) KeepAlive OÞ True Ȼor@ȡ·B(ti)@ Socket BӠB(ti)һB(ti)CMоSoģBꮅp̎ڽB(ti)ij_ijЩԭؓdߣor푑I(y)Ո@r TCP ̽yȻBӠB(ti)Hϴ·ѽ(jng)
\I̵ NAT rCƕһrgț]Д(sh)(j)BӔ_@rgֻЎhoM҂LB
ͨñC-C
ԭҪS Socket BLrgҪF(xin)ԼıCơͨõһNCƾCơ͑ÿһΕrgol(f)һСĔ(sh)(j)(j)ܷյ푑Д·Ŀԡ˹(ji)ʡ@һdzС]Ѓ

ô͑ΌF(xin)rl(f)أһЃɷNʽ
һNͨ^ Java Timer 팍F(xin)IJE£
- һҪ(zh)е΄ TimerTask
- (chung)һ Timer ͨ^ Timer ṩ schedule TimerTask 뵽r Timer OÿһΕrg(zh) TimerTask , TimerTask l(f)@NʽF(xin)^ΣʡҪ WakeLock ȱcҲ@Lrgں_M̱ջϵy(tng)ߺ Timer CS֮ʧЧ
һNʽðϵy(tng)Ķr΄չ AlarmManager ѭh(hun)(zh)аl(f)΄@Nʽϵy(tng)߶ʧЧϵy(tng)ߺȻͨ^ WakeLock (zh)΄ Timer C@Nʽ^MʹõĕrһҪעc
- ȸ(j)ʹ AlarmManager [犅(sh)[犸(sh)ą^(q)e±

- AlarmManager ṩ cancel OµĶr΄ǰͨ^ cancel ȡϵy(tng)Oõͬ΄O΄
- 6.0 汾 Doze ģʽṩµ[O÷ setExactAndAllowWhileIdle ͨ^ԓOõ[犕rgϵy(tng){Oõսy(tng)һһΆ̎_ʡ늵Ŀ]ڰ 6.0 ϵy(tng)У(yu)ʹԓ
Ϣ·C
Ϣ·հl(f)ϢҪͨҪ̶ȱ·Ŀ·û߮_rܼr̽yBȱϙCơϢ·ǰfC⣬߀So˃·(yu)CƣͺBәCƺBC
ͺBәCƵĻE£
- ͑Bӌ°l(f)ÌϢаBӷĵַб
- ͑ˏĵһַLԇBӳrCBʧ]мrյ푑 t^m(x)LԇBһֱɹBɹBӵĵַ浽(yu)ַBӕr(yu)ʹô˵ַͨ^@NCܱϿ͑˃(yu)x(yu)·sBӕrg

BCtָI(y)ՌڙzycBӔ_Lԇ N Bӷ״Δ_ 1 BȻBӲɹ 2 BgrgϴBgrg 2 LԇBӷԴƮLԇB N κȻBϷهLԇBӣֻھW(wng)jrl(f)׃´_Õrŕٴ·LԇB

·C
·Ϣ_aֶҪMLں_ĴrgʹȻܱٴΆѡ iOS ֙C APNS _ЧĹٷϵy(tng) FCM ڇȻڇȰϵy(tng)α͵_أۂҪ˽°ϵy(tng)M̹ăɴCƣ
һN LMK CӢ Low Memory Killer , Linux ăȴCҪͨ^M̵ oom_adj ֵжM̵Ҫ̶ĶQǷ@ЩM̡ oom_adj ֵԽͣҪԽ native M framework ӆӵϵy(tng)M(yu)ȼһ㶼ؓ(sh)ǰ_ҊMϵy(tng)ҲȻҊM˵_ oom_adj ֵߣϵy(tng)rr
һNCǰԭęCƣ AppOps Sڴ˻AMȶƻСİȫA֙CܼҵȣÁMЙԓC\ڰϵy(tng)Ŀ܌όӸõMLԇϵy(tng)ȕȥęzԓMЛ]ԆәŜ膢ӡtĿ܌ֱϵy(tng)Ćӡ
σɷNC·ıҲɷ֞ɴ
һM̱˼·Ǹ(j) LMK CM̃(yu)ȼͱĎҪN
- O(jin) ¼ 1 Activity ʹMDҕMͱĻrP]ԓ Activity
- po A startForeground ʽl(f)һ֪ͨ B ͬ startForeground ʽҰl(f)ͺ A ͬ ID ֪ͨȻ B { stopForeground ȡ֪ͨ@ A վ͕ǰ_M̵ʽҲӰÑ֪
- (j)ļiԭO(jin)ҕ Java M̴B(ti) Linux ӳɹļtͨ^ exec _һ Linux ĿɈ(zh)ļ_һ Daemon Ṃ ԓM Linux ӆڰ 5.0 ֮ǰ(yu)ȼ^ڰ 5.0 ֮ԓʽЧ
MIJԺͰϵy(tng) AppOps CPһN
- Service Sticky Service onStartCommand з START_STICKY @Ӯ Service ϵy(tng)ԄӇLԇ؆^ڇȶƻϵy(tng)@Nʽܳɹ؆ĎʺܵҪÑڙĴ_Ԇӵșܳɹ
- Ҳǰv^C^@Ҫʹ AlarmManager O ELAPSED_REALTIME_WAKEUP Ե[ϵy(tng)ߺŕܵ¼ĶM
- ͨ^O(jin) W(wng)jГQÑО¼M̡
- gϵy(tng)кÎׂüͬһ SDK , ôÑijһ App ĕr SDK ȥ“ֵܽ” @NʽÑwdzϵy(tng)Īĺ

@Nϵy(tng)eʡʡȴ_ʸÿԸ(j)֙C̖IJͬ(yu)ʹÏSϵy(tng)eıCƣ̶ȱ͵ĵ_