Giải thích về cách iOS chạy nền và đa nhiệm

Duy Luân
5/5/2020 15:12Phản hồi: 189
Giải thích về cách iOS chạy nền và đa nhiệm
Hôm bữa mình đã giới thiệu với anh em về cách Android chạy nền và đa nhiệm, hôm nay tới lượt iOS. Anh em đọc qua cho biết cái máy của mình chạy như thế nào, và vì sao thỉnh thoảng có app bị "load lại" khi anh em quay lại xài nó.


Các trạng thái của app


Trạng thái của app sẽ quyết định những gì app được phép làm. Những gì được phép làm mình sẽ nói sau, còn đây là các trạng thái của 1 app trên iOS:
  • Not running: cơ bản là app của bạn đang không chạy gì
  • Inactive: khi bạn vừa chạm vào icon của app ngoài màn hình chính, hoặc khi có thông báo của app gửi tới bạn. Khi bạn vuốt / bấm home để quay lại màn hình chính thì app cũng bị đưa vào trạng thái inactive. Khi app đang chạy mà có cuộc gọi chen ngang thì cũng inactive.
  • Active: khi app đã chạy lên, và bạn đã có thể bắt đầu sử dụng app như bình thường
  • Background: app sẽ tiến hành chạy ngầm một số tác vụ cho hoàn tất những gì mà bạn đang là,
  • Suspended: app bị iOS tạm dừng, nhưng nó vẫn còn nằm trong RAM của máy
  • Sau một thời gian suspended, nếu bạn không còn quay lại app nữa, nó sẽ bị kill hoàn toàn và trở về not running. Lúc này app không còn nằm trong RAM nữa.
app_state.png

Apple nói rằng một khi app đã vào trạng thái chạy background, app phải làm ít việc nhất có thể, hoàn thành nhanh nhất có thể những gì còn sót lại (ví dụ: đang cập nhật thông tin profile Facebook mà thoát ra, thì app Facebook phải nhanh chóng hoàn thành tác vụ này rồi ngưng), và giải pháp RAM nhiều nhất có thể. Và lý tưởng nhất, một khi app đã chạy nền thì app không nên làm thêm bất kì thứ gì nữa.

Khi lập trình viên làm app, Apple có một số cách để họ ra lệnh cho app làm một số việc ứng với từng trạng thái. Trong đó, Apple nói rất nhiều về việc app luôn phải chuẩn bị sẵn sàng để bị vô hiệu hóa và đưa vào trạng thái Inactive, vì người dùng có thể về home bất kì lúc nào. Cái mà Apple khuyên đó là:
  • Lưu các dữ liệu người dùng lên bộ nhớ máy, đóng mọi file đang mở
  • Ngừng việc thực hiện các tác vụ
  • Không hẹn giờ xử lý các tác vụ mới
  • Các bộ đếm giờ cũng cần được vô hiệu hóa
  • Nếu đang chơi game, thì game phải pause lại ngay lập tức
  • Dừng mọi lệnh đồ họa
Tất nhiên, iOS cũng hỗ trợ một số tác vụ chạy nền được phép vận hành trong thời gian dài, ví dụ như:
  • Chơi nhạc
  • Theo dõi vị trí, ví dụ các app chỉ đường
  • Ứng dụng gọi điện qua Internet (VoIP), ví dụ như Skype, Facebook Messenger, vậy nên bạn thoát app mà vẫn gọi được là vì thế
  • Ứng dụng tin tức cập nhật tin mới
  • Ứng dụng cần giao tiếp với các phụ kiện gắn vào máy
Có một điều đáng chú ý, đó là iOS sẽ giám sát việc chạy nền của các app, cộng với hành vi của người dùng, để quyết định xem liệu app đó có còn được phép chạy nền trong tương lai hay không và tần suất chạy nền là bao nhiêu. Ví dụ, nếu bạn dùng 1 app rất nhiều thì iOS sẽ ưu tiên cho app được phép chạy nền thường xuyên, còn nếu app ít xài thì iOS sẽ giãn số lần được phép chạy nền ra xa nhau hơn để tiết kiệm pin và tài nguyên hệ thống.

Trong iOS cũng có chức năng Background App Refresh, bạn có thể chỉnh lại những app nào được phép xài tính năng này. Background App Refresh cho phép một số app dù đã bị suspend nhưng vẫn có thể lấy nội dung mới từ Internet về. Ví dụ, app Notes cần phải thỉnh thoảng lấy ghi chú mới về để khi bạn mở app thì có sẵn các ghi chú mới đã đồng bộ sẵn sàng.

Hỗ trợ multi tasking của iOS


Cách iOS chạy đa nhiệm cũng tương tự như Android, tức là khi bạn mở một app mới thì nó sẽ "chồng" lên trên app cũ. Bạn có thể thấy được thứ tự những app này bằng cách truy cập vào màn hình đa nhiệm, cái này cơ bản chắc anh em cũng đã biết rồi ha.

Khi bạn vuốt app để về home, hoặc chuyển sang app khác, thì app cũ được đưa vào trạng thái suspended. Và sau một thời gian không dùng nữa, app sẽ bị kill hoàn toàn, đưa về trạng thái not running. Thế nên lâu lâu anh em quay lại các app mình từng dùng trước đây thì thấy nó bị "load lại", tức là app của anh em đã bị kill rồi đấy và bị giải phóng hoàn toàn khỏi bộ nhớ RAM.

ipad_os_da_nhiem.jpg

Còn nếu anh em quay lại app mình đang dùng sau chỉ vài phút, app không bị tắt hẳn nên mọi thứ vẫn còn ở đấy, anh em có thể tiếp tục dùng app như bình thường. Đó là do app chỉ mới bị suspend, vẫn còn lưu lại trong RAM.

Nếu một app mới chạy lên mà không đủ bộ nhớ, iOS sẽ bắt đầu kill dần các app đang bị suspended để đảm bảo app mới có thể hoạt động. Mình thấy rằng iOS làm điều này gay gắt hơn so với Android, còn chi tiết điều kiện, cách thức tắt app thì Apple không công bố rõ ràng, ngay cả Google cũng không nói nhiều về cách hoạt động của cơ chế tắt app này.

Quảng cáo



Apple có cung cấp một hàm tên là applicationWillTerminate để lập trình viên sửa soạn cho app trước khi nó bị giết hẳn (ví dụ như hoàn thành tác vụ đang làm, đóng các file đang truy cập...). App sẽ có khoảng 5 giây để hoàn thành mọi thứ trước khi bị "giết". Nếu hàm trên không chạy xong trong thời gian này, hệ thống sẽ tự động kill app luôn mà không đợi nữa.

Nếu bạn tắt 1 app từ giao diện đa nhiệm, app đó sẽ được giải phóng hoàn toàn ra khỏi bộ nhớ, và quan trọng là nó không thể lấy nội dung từ Internet nữa cho tới lần sau bạn mở app ra. Ví dụ, nếu Spotify đang chơi nhạc, mà bạn kill nó hẳn luôn thì việc chơi nhạc cũng sẽ bị dừng ngay lập tức.

Còn nếu bạn để cho iOS tự động xử lý, app sẽ được đưa vào trạng thái suspended và khi đó nó vẫn có thể chạy một số tác vụ nền, chẳng hạn như chơi nhạc, gọi điện VoIP... Tất nhiên như đã nói ở trên, iOS sẽ giám sát việc này để xem liệu bạn có dùng app nhiều hay không, nếu có thì app mới được update thường xuyên, còn không thì thời gian giãn cách giữa các lần được chạy nền sẽ dài ra.
189 bình luận
Chia sẻ

Xu hướng

Hay quá, dễ hình dung hơn
@ooboontoo samsung s10 đó có gì đâu
@zer0_7 kèo nào cũng chấp
https://drive.google.com/open?id=1JgAOhaSVqJ3QaW9f51EjvoY7bpiKdWDV
ooboontoo
ĐẠI BÀNG
4 năm
@MysticForce Trả lời nó chi cho cực bạn ơi. Nó tào lao xong rồi chống chế 😆
minh999
ĐẠI BÀNG
4 năm
@zer0_7 Pixel 3 series bị lỗi quản lý ram, với cả con đấy có mỗi 4GB ram thôi
Quá ngon cho đội iOS
KhanhTLDTA
ĐẠI BÀNG
4 năm
@xtheskyx bác dùng ip gì mà bị thế? trừ khi là máy đời thấp chạy ios đời cao thì mới bị vậy.
@KhanhTLDTA ipad gen 6 bác.
KhanhTLDTA
ĐẠI BÀNG
4 năm
@xtheskyx Mình còn xài ipad air 2 ipados mới nhất mà cũng k bị load lại như bạn, còn iPhone thì mình dùng X thì càng k có hiện tượng load lại như vậy
*BeckBoss*
TÍCH CỰC
4 năm
@Bông Hoa Sen ngon chc nè iphone X chạy ios 13 load lại như mứt,đó là dùng app nhẹ fb,ytb,web,zalo thôi nhé mà đã vậy
Cách mà mấy cừu hay biện minh iOS > Android là đây 😁
Sự thật thôi
@MrMedic229 Lại cà khịa rồi, band lần này nữa mệt đó kaka
@MrMedic229 Lại xàm rồi
quangtaiqn
TÍCH CỰC
4 năm
@MrMedic229 Về cơ bản cơ chế chạy nền và đa nhiệm của Android và iOS bây giờ có khác gì nhau đâu :v
Cái quang trọng iOS tốt hơn Android vẫn là tốc độ xử lý ứng dụng từ trạng thái dừng hoạt động sang trạng thái sẵn sàng hoạt động. Việc tốt hơn đơn giản vì con CPU và bộ nhớ (cái này bên Android lôm côm nhất) được tốt ưu cho iOS chỉ duy nhất trên thiết bị iPhone.
Dai_NB
ĐẠI BÀNG
4 năm
@Vũ Huy Vũ có những người sinh ra đã sống mòn với số phận cà khịa mà lại còn cực gắt nữa.
iOS ngày xưa có một cơ chế khá nổi tiếng gọi là "cơ chế bia mộ", mỗi khi app được thoát ra xuống nền, sau một khoảng thời gian xác định là sẽ bị kill, không có bất kỳ ngoại lệ nào. Những gì người dùng thấy về app đó khi mở màn hình đa nhiệm sẽ là "tấm hình cuối cùng trước khi chết" của app 😁
@WXYZ người cực đoan như bạn mình gặp nhiều, đa số toàn là U40, U50 trở lên 😆
@JerryKist Bạn mới là vô lý. Cũng giống như trong xã hội có người này người kia, thậm chí đối tác của mình hay khách hàng của mình họ cũng không phải tốt đẹp hẳn nhưng hợp tác vẫn phải hợp tác, làm ăn vẫn phải làm ăn và đề phòng vẫn phải đề phòng. Tui sử dụng google map nhưng còn cách nhà 500m là tui tắt định vị vị trí, cũng tương tự với các social apps. Ngay cả sử dụng những cái thuần về công việc như linkedin tui cũng không đồng ý cho nó truy cập danh bạ để giúp tìm kiếm người quen trên linkedin. Dùng thì dùng nhưng không phải nó muốn làm gì thì làm.
@JerryKist Tư tưởng kiểu bạn thật nguy hiểm hoặc bạn tỏ ra nguy hiểm. Đơn giản nhất là cái webcam trên laptop, khi tôi sử dụng cho cuộc gọi facetime thì tui mở băng keo ra cho nó hoạt động. Khi tôi sử dụng xong, tui lấy băng keo dán nó vào. Không thể tin tưởng 100% ở cái thời đại 4.0 này được.
@WXYZ Bác nói đúng ý mình. Trước khi sử dụng bất kỳ ứng dụng hay cái gì mình đều đọc kỹ hướng dẫn sử dụng, điều kiện và điều khoản cung cấp dịch vụ/hàng hoá. Hiểu rồi thì mới quyết định có sử dụng nó hay không.
dhpsos
TÍCH CỰC
4 năm
Ui, có cái Action nữa kìa chủ thớt ơi.
Đó là lý do ng dùng iOS cần phải k ngừng đòi hỏi nhiều RAM và nhiều pin. Tất cả cơ chế “khắc nghiệt” như trên chỉ nhằm mục đích “ăn ít để tiết kiệm tiền”. Rất phi lý.

Lấy ví dụ, bạn đang xem video trên app Google Drive. Mạng quá chậm nên video bị dừng hình hoài. Bạn chọn xem video ở chế độ offline và đợi video tải về hết xong mới xem. Tuy nhiên, trong thời gian chờ đợi k đc để màn hình tắt trong thời gian quá lâu. Nếu k mọi thời gian chờ đợi trước đó của bạn trở thành công cốc. Tất nhiên vẫn còn một cách khác là tải video trong Safari, nhưng tính năng này mới chỉ có trên iOS13/iPadOS13.
@editzrapper dùng xiaomi nhục lắm, người có tiền ăn chơi thì họ khinh nghèo k thèm chơi, người có học thì khinh xua đuổi vì của tàu, tàu nó thế nào thì bạn biết rồi đấy, người biết công nghệ tí thì thừa biết nó thu thập dữ liệu người dùng của VN rồi gưi về tàu cho nó phân tích đấy
Mình thì k phải dân công nghệ nên thứ nhất cứ iPhone cho lành, máy phụ thì bao la lắm, HTC, BB, LG, Nokia,......
@from team b with love uầy hiểu biết kinh vãi, netflix, Disney +, HBO go chỉ xem trên ipad, bạn đang dùng ipad và Tivi thật chứ, hay comt vui thôi
bật mí cho bạn là xem mấy cái thứ đấy trên tivi nó mới thật sự sướng nhé
@smartphone261 sao thế bạn, bạn có biết dùng cái đấy của bạn để nói chuyện k vậy, ngay từ tên mình đã thể hiện mình chẳng phải fan hãng nào rồi mà nhỉ.
hãng não nói thật, bảo mật, mượt thì mình dùng thôi
*BeckBoss*
TÍCH CỰC
4 năm
@quangk137a đến IP X còn xài ứng dụng thông dụng còn bị load lại như mứt đây nầy
tienna.it
ĐẠI BÀNG
4 năm
Đã hiểu, nay còn hiểu hơn. Cảm ơn bro.
Hay và bổ ích. Chờ đợi Fan Roi vào chê bai =))
@flower_cutter Có nhưng ko đông như chiều ngược lại, vì cơ bản ng dùng táo quen rồi họ cũng ko mặn mà j vs ad, có muốn ad cũng chỉ là thử hay cơ bản free tội j ko lấy. Nhưng thành phần này ko nh vì mua dc táo rồi thì ng ta cũng ko tội j làm mấy cái events mất thời gian chỉ để lấy 1 sp về ko biết dùng làm j mà trải nghiệm cũng ko quen thuộc, thậm chí thua xa sp họ đang dùng... dân táo nổi tiếng thích xả tiền mua sự tiện dụng, nếu free mà bất tiện họ cũng làm biếng, chứ ko phải theo chiều bất chấp liêm sỉ, có thì có ko có thì thôi như mấy cái event của táo... dân táo muốn thử trải nghiệm dùng ad ít hơn dân ad muốn thử dùng ios😃
merinoka
TÍCH CỰC
4 năm
@Barbatos Chuẩn ý luôn. Tư tưởng trc mình cũng vậy. Even nào có sản phẩm tặng máy ăn ròi. Mình thật sự ko có hứng tham gia luôn. Vì dù có trúng hay ko thì cũng ko quan trọng vì nếu nhận đc cũng chẳng xài. Cho người thân lại càng ko. Vì từ ba má anh chị em toàn xài iPhone hết rồi. Với cũng ko rảnh nhận lấy món quà mình ko ưng. Nếu là sản phẩm Apple thì thích 😂😂😂😂
@merinoka nói ra chắc nh ng bảo e chém, chứ e chả bao h thèm tham gia 1 cái events nào của tinh te, lại còn cày huy hiệu vs điểm thì càng k0, dạo này tt thấy nhảm vs mất chất vl, tương tác tỉ lệ nghịch vs chất lượng😃
@Barbatos Sao bạn ko nghĩ nhiều người dùng ad cũng vậy. Ad cũng có cao cấp, và thấp hơn, ios cũng có người mua lại. Chứ dùng ios rồi mà ko thèm dùng ad thì thị phần ad sẽ ngày một teo tóp. Ko phải vì ko có tiền vì ios qua sd hay như con mới ra này giá cũng bình dân như tầm trung của ss thôi.
cherish68
ĐẠI BÀNG
4 năm
ngon ngon
Nếu chạy nền như ad thì ios ko thể vs số ram ít ỏi thế mà vẫn cực kỳ mượt mà dc... vẫn khâm phục các kỹ sư apple thiết kế cơ chế chạy nền quá đỉnh như thế😃 vừa nhanh, vừa hiệu quả, lại tiết kiệm pin vs RAM😃
@from team b with love nó có thông báo RAM ra cho bạn lựa mua máy đâu mà lựa
quangtaiqn
TÍCH CỰC
4 năm
@Barbatos Nhưng nó có một số cái nhược điểm siêu tệ:
Các ứng dụng bên thứ 3 không có được quyền truy cập vào một số hàm xử lý background của iOS nên bị chết ngay khi thoát app đấy.
Ví dụ khi khi bạn sử dụng trình duyệt bên thứ 3 không phải Safari bạn chỉ có thể download file được từ trình duyệt đó nếu vẫn còn trong màn hình sử dụng trình duyệt, còn khi bạn thoát ra hay hơn đơn giản là tắt màn hình thì nó kill luôn tác vụ download và bạn lại phải bắt đầu lại từ đầu 😃
@Barbatos Vấn đề là nhiều người nghĩ mình bỏ số tiền để hưởng đa nhiệm và nghĩ là mình đang được xài đa nhiệm nhưng thật ra lại là đơn nhiệm. Thật là một cú lừa 😃)
masterss0
TÍCH CỰC
4 năm
@smartphone261 nói thật là chả mấy ai bỏ tiền ra mua đồ apple để dc xài đa nhiệm cả =)) toàn xuống tiền vì cái logo thôi =)) giờ vẫn còn nhiều và rất nhiều người nghĩ ỊP6 chụp hình đẹp, nét hơn flag ship android mà =))
Có một khó chịu là lúc trước dùng android, xài google photo thì mình vừa chụp xong một lát sau bấm lên thì nó đã tự động sao lưu ảnh lên hết rồi. Còn đối với ios thì phải mở app lên nó mới bắt đầu sao lưu, không hiểu mình có tắt gì không hay do cơ chế nó thế.
DuyQuang91
ĐẠI BÀNG
4 năm
@Lil Nguyễn iCloud hay App chính chủ Apple họ được xài các private API để backup dữ liệu ngầm, chỉ có Apple được xài, các App khác nếu sử dụng các private API này sẽ ko được phê duyệt lên App Store.
@Lil Nguyễn Chắc bác có tắt gì đó. Mình ít khi mở G.P nhưng mỗi lần mở nó đều sao lưu gần đủ trừ những hình vừa chụp trong ngày.
quangtaiqn
TÍCH CỰC
4 năm
@Lil Nguyễn Đơn giản là Apple họ không cho các bên thứ 3 sử dụng luồn xử lý background thôi bạn. Muốn được như thế bạn phải thỏa thuận với Apple để được cấp phép. Và Apple sẽ khó có thể cho phép Google làm như giống trên Android vì đơn giản họ là đối thủ cạnh tranh của nhau và dữ liệu ảnh của bạn tự đồng bộ của Google Photos giống y chang cơ chế của iCloud.
@Lil Nguyễn Ngoài ra các private API này còn được xem là cơ chế bảo mật thông tin người dùng. Nếu app thứ 3 được sử dụng vô tội vạ thì hình ảnh của người dùng sẽ không biết được gửi đi những đâu. VD: Zalo, Facebook được cấp quyền vô các private api này thì hình của người dùng chụp lên sẽ liên tục được thu thập bởi zalo, fb. Và người dùng thì ngầm mặc định không muốn điều đó xảy ra.
Cám ơn Duy Luân, bài viết rất chi tiết cho bất kì ai cũng có thể hiểu.
cơ chế này giống như trên miui hạn chế chạy nền app, ví dụ đang tải video thì mở app để nguyên, nếu chuyển dùng app khác là vài phút app bị kill luôn. nhưng miui thì tùy chỉnh được. ios thì nghiêm khắc hơn
Thông minh
@cuhiep Cảm ơn bạn đã tương tác
@Duy Luân Ko phải sếp ah, hay mod ra riêng rồi😃
@Barbatos Sếp sòng gì ở đây :v Ít năm nữa là đổi ngôi thôi hihihihii
@Duy Luân Có tư tường lật đổ chính quyền kìa😃 loạn rồi😃
Ha ha 😄. Làm việc thế mới vui
MeoMao121
TÍCH CỰC
4 năm
Mong có thêm bài so sánh nữa
@MeoMao121 Bài về ios chi tiết và đầy đủ là bác hiểu r còn gì 😆
MeoMao121
TÍCH CỰC
4 năm
@mannavod thêm 1 bài so sánh sự hơn thua giữa A vs I nữa thì hay hơn chứ bác. còn xử lý riêng từng thằng nó vẫn chỉ là logic thôi cái nào cũng đúng.
@MeoMao121 ok, để mình so 😆
Béo2929
ĐẠI BÀNG
4 năm
cảm ơn bác đã tổng hợp tin hay, like mạnh.
Dù ai nói ngã nói nghiêng, Ipad là nhất phải ko cả nhà 😂😝😆
@Bão Sài Gòn yes 😆
Hay, sâu, dễ hiểu!
leonheart79
ĐẠI BÀNG
4 năm
bài viết hay, thanks bạn

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019