Vẫn còn rất nhiều người chưa biết cách hoạt động đa nhiệm trong iOS. Tuy nhiên, trước hết, cần phải chỉ ra rằng đây không phải là đa nhiệm thực sự mà là một giải pháp rất thông minh, không gây gánh nặng cho hệ thống hoặc người dùng.
Người ta thường có thể nghe thấy những quan niệm mê tín rằng các ứng dụng chạy nền trong iOS sẽ làm đầy bộ nhớ hệ điều hành, dẫn đến hệ thống bị chậm và hao pin, vì vậy người dùng nên tắt chúng theo cách thủ công. Thanh đa nhiệm thực tế không chứa danh sách tất cả các tiến trình đang chạy trong nền mà chỉ chứa các ứng dụng được khởi chạy gần đây nhất. Vì vậy người dùng không phải lo lắng về các tiến trình chạy ngầm ngoại trừ một số trường hợp. Khi bạn nhấn nút Home, ứng dụng thường chuyển sang chế độ ngủ hoặc đóng để không tải bộ xử lý hoặc pin nữa và giải phóng bộ nhớ cần thiết nếu cần.
Vì vậy, đây không phải là đa nhiệm hoàn toàn khi bạn có hàng tá tiến trình đang chạy. Chỉ có một ứng dụng luôn chạy ở nền trước, ứng dụng này sẽ bị tạm dừng hoặc tắt hoàn toàn nếu cần. Chỉ có một số tiến trình phụ chạy ở chế độ nền. Chính vì thế mà bạn sẽ hiếm khi gặp tình trạng treo ứng dụng trên iOS, chẳng hạn Android tràn ngập các ứng dụng đang chạy mà người dùng phải quan tâm. Một mặt, điều này làm cho việc sử dụng thiết bị trở nên khó chịu, mặt khác, nó gây ra, chẳng hạn như khởi động và chuyển đổi giữa các ứng dụng chậm.
Loại thời gian chạy ứng dụng
Ứng dụng trên thiết bị iOS của bạn đang ở một trong 5 trạng thái sau:
- Đang chạy: ứng dụng được khởi động và chạy ở nền trước
- Lý lịch: nó vẫn đang chạy nhưng chạy ngầm (chúng ta có thể sử dụng các ứng dụng khác)
- Cấm: Vẫn dùng RAM nhưng không chạy
- Không hoạt động: ứng dụng đang chạy nhưng các lệnh gián tiếp (ví dụ: khi bạn khóa thiết bị với ứng dụng đang chạy)
- Không chạy: Ứng dụng đã chấm dứt hoặc chưa bắt đầu
Sự nhầm lẫn xảy ra khi ứng dụng chạy ở chế độ nền để không làm phiền. Khi bạn nhấn nút Home hoặc sử dụng cử chỉ để đóng ứng dụng (iPad), ứng dụng sẽ chuyển sang chế độ chạy nền. Hầu hết các ứng dụng đều bị treo trong vòng vài giây (Chúng được lưu trữ trong RAM của iDevice để có thể khởi chạy nhanh chóng, chúng không tải bộ xử lý nhiều và do đó tiết kiệm pin) Bạn có thể nghĩ rằng nếu một ứng dụng tiếp tục sử dụng bộ nhớ, bạn có xóa nó theo cách thủ công để giải phóng nó. Nhưng bạn không nhất thiết phải làm điều đó, vì iOS sẽ làm điều đó cho bạn. Nếu bạn có một ứng dụng đòi hỏi khắt khe bị treo ở chế độ nền, chẳng hạn như một trò chơi sử dụng nhiều RAM, iOS sẽ tự động xóa ứng dụng đó khỏi bộ nhớ khi cần thiết và bạn có thể khởi động lại ứng dụng đó bằng cách nhấn vào biểu tượng ứng dụng.
Không có trạng thái nào trong số này được phản ánh trên thanh đa nhiệm, bảng điều khiển chỉ hiển thị danh sách các ứng dụng được khởi chạy gần đây bất kể ứng dụng đó bị dừng, tạm dừng hay chạy trong nền. Bạn cũng có thể nhận thấy ứng dụng hiện đang chạy không xuất hiện trong bảng Đa nhiệm
Tác vụ nền
Thông thường, khi bạn nhấn nút Home, ứng dụng sẽ chạy ở chế độ nền và nếu bạn không sử dụng, ứng dụng sẽ tự động tạm dừng trong vòng năm giây. Vì vậy, chẳng hạn, nếu bạn đang tải xuống một podcast, hệ thống sẽ đánh giá nó là một ứng dụng đang chạy và trì hoãn việc chấm dứt sau 10 phút. Chậm nhất sau mười phút, quá trình này sẽ được giải phóng khỏi bộ nhớ. Tóm lại, bạn không phải lo lắng về việc làm gián đoạn quá trình tải xuống của mình khi nhấn Nút Home, nếu không mất quá XNUMX phút để hoàn tất.
Chạy nền không xác định
Trong trường hợp không hoạt động, hệ thống sẽ chấm dứt ứng dụng trong vòng năm giây và trong trường hợp tải xuống, việc chấm dứt sẽ bị trì hoãn trong mười phút. Tuy nhiên, có một số ít ứng dụng yêu cầu chạy ở chế độ nền. Dưới đây là một số ví dụ về các ứng dụng có thể chạy ẩn vô thời hạn trong iOS 5:
- Các ứng dụng phát âm thanh và phải bị gián đoạn trong một thời gian (tạm dừng nhạc khi gọi điện thoại, v.v.),
- Ứng dụng theo dõi vị trí của bạn (phần mềm điều hướng),
- Các ứng dụng nhận cuộc gọi VoIP, ví dụ: nếu bạn sử dụng Skype, bạn có thể nhận cuộc gọi ngay cả khi ứng dụng ở chế độ nền,
- Tải xuống tự động (ví dụ Newsstand).
Tất cả các ứng dụng sẽ bị đóng nếu chúng không còn thực hiện một tác vụ nào nữa (chẳng hạn như tải xuống trong nền). Tuy nhiên, có những trường hợp ngoại lệ chạy liên tục trong nền, chẳng hạn như ứng dụng Thư gốc. Nếu chúng chạy ở chế độ nền, chúng sẽ chiếm bộ nhớ, mức sử dụng CPU hoặc giảm tuổi thọ pin
Các ứng dụng được phép chạy ẩn vô thời hạn có thể làm bất cứ điều gì chúng làm trong khi đang chạy, từ phát nhạc đến tải xuống các tập Podcast mới.
Như tôi đã đề cập trước đó, người dùng không bao giờ cần đóng các ứng dụng đang chạy ẩn. Ngoại lệ duy nhất cho trường hợp này là khi một ứng dụng chạy ngầm gặp sự cố hoặc không thức dậy sau khi ngủ đúng cách. Sau đó, người dùng có thể đóng các ứng dụng theo cách thủ công trên thanh đa nhiệm, nhưng điều này hiếm khi xảy ra.
Vì vậy, nhìn chung, bạn không cần quản lý các tiến trình nền vì hệ thống sẽ tự xử lý chúng. Đó là lý do tại sao iOS là một hệ thống mới và nhanh đến vậy.
Từ góc nhìn của nhà phát triển
Ứng dụng có thể phản ứng với tổng cộng sáu trạng thái khác nhau như một phần của đa nhiệm:
1. ứng dụngWillResignActive
Trong bản dịch, trạng thái này có nghĩa là ứng dụng sẽ từ chức thành ứng dụng đang hoạt động (nghĩa là ứng dụng ở nền trước) trong tương lai (chỉ trong vài mili giây). Điều này xảy ra, chẳng hạn như khi nhận cuộc gọi trong khi sử dụng ứng dụng, nhưng đồng thời, phương pháp này cũng gây ra trạng thái này trước khi ứng dụng chuyển sang chế độ nền, vì vậy bạn cần tính đến những thay đổi này. Phương pháp này cũng phù hợp, chẳng hạn như nó tạm dừng tất cả các hoạt động mà nó đang thực hiện khi có cuộc gọi đến và đợi cho đến khi kết thúc cuộc gọi.
2. ứng dụngDidEnterBackground
Trạng thái cho biết ứng dụng đã chuyển sang chế độ nền. Nhà phát triển nên sử dụng phương pháp này để tạm dừng tất cả các quy trình không nhất thiết phải chạy ở chế độ nền và xóa bộ nhớ đối với dữ liệu không được sử dụng cũng như các quy trình khác, chẳng hạn như bộ hẹn giờ hết hạn, xóa các hình ảnh đã tải khỏi bộ nhớ không nhất thiết cần thiết hoặc đóng kết nối với máy chủ, trừ khi việc ứng dụng hoàn thành các kết nối ở chế độ nền là rất quan trọng. Khi phương thức này được gọi trong ứng dụng, về cơ bản, nó sẽ được sử dụng để tạm dừng hoàn toàn ứng dụng nếu một phần của nó không bắt buộc phải chạy ở chế độ nền.
3. ứng dụngWillEnterForeground
Trạng thái này trái ngược với trạng thái đầu tiên, nơi ứng dụng sẽ chuyển sang trạng thái hoạt động. Trạng thái đơn giản có nghĩa là ứng dụng đang ngủ sẽ tiếp tục từ nền và xuất hiện ở nền trước trong vòng vài mili giây tiếp theo. nhà phát triển nên sử dụng phương pháp này để tiếp tục mọi quy trình không hoạt động khi ứng dụng ở chế độ nền. Các kết nối với máy chủ phải được thiết lập lại, đặt lại bộ hẹn giờ, tải hình ảnh và dữ liệu vào bộ nhớ cũng như các quy trình cần thiết khác có thể tiếp tục ngay trước khi người dùng nhìn thấy lại ứng dụng đã tải.
4. applicationDidBecomeActive
Trạng thái cho biết ứng dụng vừa mới hoạt động sau khi được khôi phục về nền trước. Đây là phương pháp có thể được sử dụng để thực hiện các điều chỉnh bổ sung cho giao diện người dùng hoặc khôi phục giao diện người dùng về trạng thái ban đầu, v.v. Điều này thực sự xảy ra tại thời điểm người dùng đã nhìn thấy ứng dụng trên màn hình, vì vậy cần phải thực hiện xác định một cách thận trọng những gì xảy ra trong phương pháp này và trong phương pháp trước đó. Chúng được gọi lần lượt với sự khác biệt vài mili giây.
5. ứng dụngWillTerminate
Trạng thái này xảy ra vài mili giây trước khi ứng dụng thoát, tức là trước khi ứng dụng thực sự chấm dứt. Hoặc thủ công từ đa nhiệm hoặc khi tắt thiết bị. Phương pháp này nên được sử dụng để lưu dữ liệu đã xử lý, kết thúc mọi hoạt động và xóa dữ liệu không còn cần thiết.
6. applicationDidReceiveMemoryWarning
Đây là trạng thái cuối cùng được thảo luận nhiều nhất. Nó có trách nhiệm xóa ứng dụng khỏi bộ nhớ iOS nếu cần thiết nếu nó sử dụng tài nguyên hệ thống một cách không cần thiết. Tôi không biết cụ thể iOS làm gì với các ứng dụng nền, nhưng nếu nó cần một ứng dụng để giải phóng tài nguyên cho các quy trình khác, nó sẽ nhắc ứng dụng đó bằng cảnh báo bộ nhớ để giải phóng mọi tài nguyên mà nó có. Vì vậy, phương pháp này được gọi trong ứng dụng. Các nhà phát triển nên triển khai nó để ứng dụng loại bỏ bộ nhớ mà nó đã phân bổ, lưu mọi thứ đang diễn ra, xóa dữ liệu không cần thiết khỏi bộ nhớ và giải phóng bộ nhớ một cách thỏa đáng. Đúng là nhiều nhà phát triển, ngay cả những người mới bắt đầu, không nghĩ đến hoặc hiểu những điều như vậy và khi đó có thể xảy ra trường hợp ứng dụng của họ đe dọa đến tuổi thọ pin và/hoặc tiêu tốn tài nguyên hệ thống một cách không cần thiết, ngay cả ở chế độ nền.
Nhận định
Sáu trạng thái này và các phương thức liên quan của chúng là nền tảng của tất cả "đa nhiệm" trong iOS. đó là một hệ thống tuyệt vời, miễn là các nhà phát triển không bỏ qua thực tế là cần phải chịu trách nhiệm về những gì ứng dụng xuất hiện trên thiết bị của người dùng của họ, nếu chúng bị thu nhỏ hoặc nhận được cảnh báo từ hệ thống, v.v.
Nguồn: macworld.com
tác giả: Jakub Požárek, Martin Doubek (ArnieX)
Bạn cũng có một vấn đề cần giải quyết? Bạn có cần lời khuyên hoặc có thể tìm thấy ứng dụng phù hợp? Đừng ngần ngại liên hệ với chúng tôi qua biểu mẫu trong phần Tư vấn, lần sau chúng tôi sẽ trả lời câu hỏi của bạn.
Xin chào, bài viết rất hay, nhưng tôi không biết bạn có hỗ trợ kỹ thuật nào cho nó không. Bởi vì tôi đã giải quyết pin vài lần vào buổi tối trước khi đi ngủ và xảy ra tình trạng tắt wifi và dữ liệu di động, mất nhiều thời gian hơn một trường hợp khác là tắt wifi và chỉ có 3G.
Thật không may, trải nghiệm là ở iOS, các ứng dụng phải tắt thủ công và hệ thống không còn chạy tốt như trước nữa.
Tôi đã thay thế iPhone của mình bằng Windows Phone (Samsung Omnia W với giá 6200,-) và tốc độ của hệ thống ở một cấp độ hoàn toàn khác.
Tôi sợ rằng khi máy tính bảng Windows 8 Metro ra mắt, tôi cũng sẽ thay thế iPad...
@007 – vâng, nếu bạn đang so sánh iPhone3G cũ với WP mới, thì đúng vậy (ai có thể ngờ được điều đó?) WP sẽ nhanh hơn một chút. Mặt khác, những lời đàm tiếu về Karlulka không có lợi cho bạn và việc so sánh HW hiện tại là điều thích hợp. Tôi cũng đã mua WP7 và cuối cùng đã mua được 4s, điều này thể hiện mức độ sử dụng hoàn toàn khác so với WP7. Vì vậy, hãy vượt qua một cách thú vị và không ngừng cuộn qua các ô.
Tôi hoàn toàn đồng ý với Paja
Tôi sẽ đóng góp một lần nữa từ đống đổ nát của một chiếc thùng khác - Samsung Galaxy S và iPhone 4 - tôi có thể nói là có thể so sánh được về độ tuổi? Vào thời điểm iOS 4, và xét về khả năng sử dụng cũng như tốc độ ở đâu đó ngoài Android, Apple đã giải quyết rất tốt khái niệm làm việc với các ứng dụng, nhưng điều này không còn đúng với Android nữa. Cuối cùng, dù sao thì tôi cũng đã sử dụng 4S và tôi không có lời phàn nàn nào, bởi vì "nó chỉ hoạt động" .. và nó hoạt động rất nhanh!
Lý thuyết thì hay... Nhưng thực tế mình vẫn đóng ứng dụng trong bar ;)
Cảm ơn, rất thú vị, thực dụng, thú vị, không thiếu sự xoay chuyển và chiều sâu. Nhấn mạnh đáng kể nỗi ám ảnh của giới trẻ ngày nay với thương hiệu bị cấm này! Nhưng cảm ơn vì cô ấy, cũng như vì bài viết này.
Bài viết hoàn toàn sai.
Ứng dụng không thoát khi nhấn nút Home như đã nêu sai mà tạm dừng. I E. chắc chắn không xóa khỏi bộ nhớ và không thoát. Chỉ cần tạm dừng chạy, iOS sẽ cung cấp cho ứng dụng này 0% thời gian CPU. Nó chắc chắn không "hoán đổi" bất cứ nơi nào trong bộ nhớ iDevice, như đã nêu trong bài viết. Điều này thực sự là nhờ vào việc có thể sử dụng tính năng chuyển đổi ứng dụng.
Ứng dụng sẽ bị xóa khỏi bộ nhớ khi điện thoại còn ít bộ nhớ để chạy các ứng dụng khác có mức độ ưu tiên cao hơn (thường là một ứng dụng khác đang chạy ở nền trước).
Trong trường hợp đầu tiên, bạn nói đúng, đó là lỗi dịch thuật. Về việc hoán đổi, ở đây chúng tôi không nói đến vấn đề đó mà đang nói về bộ nhớ hoạt động chứ không phải dung lượng lưu trữ trên thiết bị iOS.
hình ảnh của ứng dụng được lưu trong bộ nhớ trong một thời gian giới hạn cho đến khi nó được gọi lại bằng lệnh (xem 13,7 GB trên 16 GB: 2,3 GB được dành riêng cho hệ thống và các ứng dụng bị treo)
Vì vậy, cần phân biệt giữa các ứng dụng như Điều hướng, Skype và những ứng dụng tương tự, những ứng dụng này vẫn hoạt động ngay cả ở chế độ nền hoặc một chức năng nhất định không kết thúc và tiếp tục, chẳng hạn như gửi dữ liệu về vị trí hoặc thông tin vị trí của nó. Hoặc như Vokul ở chế độ nghe pord và đa nhiệm vẫn nghe ở chế độ nền.
Các ứng dụng này gây hao pin và phải đóng thủ công chứ không phải đợi iOS. với những người khác thì không cần thiết, chỉ có trong trường hợp ứng dụng gặp sự cố.
Tôi không thể đồng ý với bài viết. Tối thiểu. trên iPad thế hệ 1 (iOS 5.0.1), có thể thấy rõ mình có nhiều ứng dụng "mở" trong thanh đa nhiệm hay chỉ một số ít. iOS cố gắng dọn dẹp bộ nhớ, nhưng rõ ràng là chưa đủ - kích thước RAM nhỏ có lẽ là điểm yếu lớn nhất của nó.
do đó phụ thuộc rất nhiều vào hệ thống và phần cứng được sử dụng, khá hợp lý là trên iPad 1 chạy iOS 5.0.1 sẽ tệ hơn so với trên iPad thế hệ 2
Xin lỗi bạn đời, đây là mô tả về cách thức hoạt động LÝ TƯỞNG. Thật không may, thực tế lại hoàn toàn khác và bạn sẽ biết điều đó nếu bạn sử dụng các sản phẩm của Apple, ít nhất là nhiều như tôi (tức là thỉnh thoảng).
"Bạn có thể thường nghe thấy những điều mê tín rằng các ứng dụng chạy nền trong iOS sẽ lấp đầy bộ nhớ hoạt động,"
Đó không phải là mê tín, đó chỉ là sự thật. Rốt cuộc, bạn tự khẳng định điều đó trong bài viết.
"Như tôi đã đề cập trước đó, người dùng không bao giờ cần phải đóng các ứng dụng đang chạy ẩn."
VÔ LÝ. Đó chỉ là chuyện nhảm nhí, tuyên truyền táo bạo, đừng giận tôi.
“Nhưng bạn không cần phải làm điều đó vì iOS sẽ làm điều đó cho bạn. Nếu bạn có một ứng dụng đòi hỏi khắt khe bị treo ở chế độ nền, chẳng hạn như một trò chơi sử dụng nhiều RAM, iOS sẽ tự động xóa ứng dụng đó khỏi bộ nhớ khi cần thiết và bạn có thể khởi động lại nó bằng cách nhấn vào biểu tượng ứng dụng.”
Không đúng. Tình hình hơi khác một chút. Một ví dụ điển hình – Tôi có các ứng dụng đòi hỏi chạy nền, tôi cần trò chơi. Tôi khởi chạy trình duyệt, mở một vài tab -> cần thêm bộ nhớ. Chuyện gì sẽ xảy ra? Các ứng dụng khó sẽ ở chế độ nền, ngược lại, BẢN THÂN TRÌNH DUYỆT SẼ TUYỆT VỜI. Nếu tôi đóng các ứng dụng đòi hỏi khắt khe theo cách thủ công, trình duyệt sẽ hoạt động trong thời gian dài mà không gặp vấn đề gì.
Đây là thực hành, không phải lý thuyết. Và tôi ngạc nhiên rằng, là một người sử dụng sản phẩm Apple lâu năm, bạn vẫn không biết điều này.
Cảm ơn, điều này được mô tả rất tốt và giải thích rõ ràng. Bạn đã giúp tôi khá nhiều ;-) ♥
Để bắt đầu, tôi không ủng hộ cũng không phản đối iOS, cũng như với Android, nhưng có một vài điều kỳ lạ ở đây, nếu như người ta viết ở đây: "bạn hiếm khi gặp phải sự cố ứng dụng trên iOS" thì trên ứng dụng Android sẽ gặp sự cố về mỗi năm một lần : -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Có, nhưng trường hợp bạn cần đóng ứng dụng theo cách thủ công thực sự rất ít, tôi đã sử dụng nó khoảng một lần? ;-) và việc đưa ra một liên kết đến bài kiểm tra so sánh từ Mobilemania là khá vô nghĩa, khi tôi muốn đọc về quảng cáo mà Google đã trả tiền, tôi sẽ xem ở đó ;-) mọi người đều có thể cầm trên tay bất kỳ điện thoại Android nào và nó sẽ không chạy trơn tru, nghĩa là, ngoại trừ Galaxy Nexus, hệ thống ít nhiều được thiết kế riêng. Nói chung android là thảm họa
@Mek – Tôi đã sử dụng các sản phẩm của Apple hàng ngày trong vài năm và điều này chưa bao giờ xảy ra với tôi, vì vậy lý thuyết của bạn bằng cách nào đó không hiệu quả.
CẦN SA:
@redakce – Bạn có thể thấy rằng trang web liên tục được hoạt động hoặc có điều gì đó đang xảy ra với nó, nhưng tôi có cảm giác rằng không phải mất một tuần để mọi thứ hoạt động như bình thường. Và tôi thực sự không đến đây nữa, vì diện mạo mới không phù hợp với tôi. Ít nhất tôi đã sử dụng phiên bản di động trên iPhone, nhưng bây giờ nó không hoạt động chút nào - tại sao vậy? Họ hiện không trả lời các bài viết trong phần bình luận.
@SteveJSF Thật không may, mọi thứ không phải lúc nào cũng diễn ra theo cách chúng ta mong muốn. Về câu trả lời, plugin SEO mới đã phá vỡ chúng, hiện tại nó đang được giải quyết.
WP-Touch cũng đã chấm dứt dịch vụ của chúng tôi vì một số lý do, vì vậy chúng tôi quyết định đưa ra giải pháp tốt hơn plugin này. Vì vậy, bạn có thể mong đợi những tin tức tiếp theo sớm :-)
Bài viết hay. Về mặt thực tiễn, tôi muốn nói rằng tôi đồng ý với một số điều và hầu hết nó hoạt động như đã nêu, nhưng thật không may, vẫn có những ứng dụng được viết kém và hoạt động không chính xác, và sau đó có những trường hợp như trường hợp này được một số độc giả ghi nhận. Tôi nghĩ rằng Skype là một ví dụ rất hay, qua thực tế tôi biết rằng nó vẫn chạy ở chế độ nền (điều đó không sao cả và lẽ ra phải như vậy), nhưng vấn đề là ứng dụng này làm hao pin của thiết bị rất nhiều và Tôi không thể nhìn thấy nó đúng nữa. Ngược lại, các ứng dụng như Facebook, Badoo, v.v.. chúng cũng vẫn đang chạy ở chế độ nền, nhưng mức tiêu thụ của chúng gần như không thể nhận thấy được (ít nhất là tôi không nhận thấy điều gì cả). Vì vậy, tôi nghĩ lỗi là ở các ứng dụng riêng lẻ. Nếu bạn biết cái nào, chỉ cần tắt thủ công những cái đó là đủ!
Vì vậy, thực tế là Facebook chỉ chạy khi cần thiết và Skype chỉ khi cần thiết.
À, mặt khác, nếu cần tiết kiệm pin và biết mình phải giữ cho iPhone “sống” càng lâu càng tốt thì tôi cũng tắt mọi thứ không cần thiết trong đa nhiệm, nhưng chủ yếu là nó không ảnh hưởng gì lớn, nhưng nếu cần, tôi hạn chế 3G, tất cả internet di động, WiFi, dịch vụ định vị, chế độ trên máy bay, cường độ ánh sáng, v.v. Là một phần của thói quen, tôi cũng tắt các ứng dụng nói trên ở chế độ đa nhiệm.
Vì vậy, cá nhân tôi nghĩ rằng bài viết là đúng, rất tiếc là một số lập trình viên lại bác bỏ những điều này với ứng dụng của họ, bởi vì ứng dụng của họ không chính xác và theo tôi chỉ có hai giải pháp cho việc này 1. Nếu không thể sử dụng ứng dụng và tìm một giải pháp thay thế nếu có thể, hoặc 2. Nếu không thể, hãy xem ví dụ Skype, viết nó cho lập trình viên nhất định trong báo cáo và hy vọng rằng họ sẽ làm gì đó với nó.
Việc tắt ứng dụng theo cách thủ công có thể là vô nghĩa, nhưng tôi vẫn làm điều đó. Tôi cũng đã cố gắng không tắt hệ thống ứng dụng, để chúng chạy (hoặc để chúng ở chế độ nền) và thời lượng pin thấp hơn nhiều, tôi cũng phải khởi động lại iPad 2 sau khoảng ba tuần, nó phản hồi chậm. Vì vậy, tôi tắt ứng dụng theo cách thủ công, pin kéo dài hơn, gần đây tôi đã khởi động lại vào ngày Giáng sinh và nó chạy tốt.
Nhân tiện, tôi cũng làm điều tương tự trên Mac OS X, tôi chỉ đóng ứng dụng tôi không cần (CMD+Q), thà để nó ngủ ở chế độ nền và ngốn RAM một cách không cần thiết (OS X có thể ' t làm việc rất tốt). Mình có ít RAM, chỉ có 8 GB, nhưng ở Windows 7 với 8 GB thì hệ thống không phản hồi chậm hoặc bị giật, ở OS X đây là hiện tượng khá phổ biến (tôi chưa bao giờ tắt máy, tôi cũng làm như vậy với Mac , nên thời gian hoạt động từ một tháng trở lên cũng không phải là ngoại lệ, vấn đề là đôi khi tôi phải khởi động lại máy Mac để đề phòng giải phóng RAM và "tăng tốc", Windows 7 không cần điều này).
Tôi quan tâm nhiều hơn đến cách thực sự làm nổ tung ứng dụng. Điều xảy ra với tôi là ứng dụng (cụ thể là trên Geocaching) rơi vào trạng thái đang tải thứ gì đó từ máy chủ mẹ và bị kẹt ở trạng thái đó. Nút Home đã hoạt động, sau khi khởi động lại, nó trở lại trạng thái đóng băng (nơi tôi đã dừng lại). Thoát thủ công (đến menu đa nhiệm, giữ biểu tượng và dấu trừ để đóng) = ứng dụng biến mất, sau khi khởi động lại, nó mở ở trạng thái ban đầu và bị treo. Vì vậy, tôi đóng mọi thứ, tắt điện thoại, bật nó lên, nhấp đúp vào HOME và lo và kìa - tất cả các ứng dụng vẫn ở đó như trước khi chúng bị đóng ngay trước khi tắt. Việc khởi động lại cũng không giúp được gì - giữ ở nhà và phía trên cho đến khi trời nóng. Điều duy nhất hữu ích là xóa ứng dụng khỏi điện thoại, khởi động lại và cài đặt lại trên điện thoại. Bằng cách nào đó tôi đã không lấy nó.
Tính năng quản lý Đa nhiệm này hoạt động và việc đối phó với những tình huống này là tùy thuộc vào các nhà phát triển. Đối với những người quan tâm đến một mô tả chi tiết và chuyên nghiệp hơn về toàn bộ tình huống, tôi sẽ viết ở đây nó diễn ra như thế nào.
Ứng dụng có thể phản hồi tổng cộng 6 trạng thái và các trạng thái này là:
ứng dụngWillResignActive
ứng dụngDidEnterBackground
ứng dụngWillEnterForeground
ứng dụngDidBecomeActive
ứng dụngSẽ Chấm dứt
ứng dụngDidReceiveMemoryCảnh báo
Bây giờ tôi sẽ cố gắng mô tả những trạng thái này chi tiết hơn.
applicationWillResignActive – trạng thái này có nghĩa là trong tương lai (chỉ trong vài mili giây), ứng dụng sẽ ngừng hoạt động như một ứng dụng đang hoạt động (tức là ứng dụng ở nền trước), điều này xảy ra chẳng hạn như khi nhận được cuộc gọi trong khi sử dụng ứng dụng, nhưng đồng thời Đôi khi, phương pháp này sẽ kích hoạt ngay cả trước khi ứng dụng chạy ở chế độ nền, vì vậy bạn cần tính đến những thay đổi này. Phương pháp này cũng phù hợp, chẳng hạn như nó tạm dừng tất cả các hoạt động mà nó đang thực hiện khi có cuộc gọi đến và đợi cho đến khi kết thúc cuộc gọi.
applicationDidEnterBackground - trạng thái này cho biết ứng dụng đã vào nền, nhà phát triển nên sử dụng phương pháp này để tạm dừng tất cả các quy trình không nhất thiết phải chạy trong nền và xóa bộ nhớ khỏi dữ liệu không sử dụng và các quy trình khác, ví dụ: bộ hẹn giờ hết hạn, xóa khỏi hình ảnh được tải vào bộ nhớ sẽ không nhất thiết cần thiết hoặc chấm dứt kết nối với máy chủ nếu việc ứng dụng hoàn thành kết nối ở chế độ nền là không quan trọng. Về cơ bản, phương pháp này khi được gọi trong ứng dụng sẽ được sử dụng để tạm dừng hoàn toàn ứng dụng nếu một phần của ứng dụng không bắt buộc phải chạy ở chế độ nền.
applicationWillEnterForeground - trạng thái này trái ngược với trạng thái đầu tiên khi ứng dụng sẽ chuyển sang trạng thái hoạt động. Trạng thái ứng dụng này đơn giản có nghĩa là trong vài mili giây tiếp theo, ứng dụng đang ngủ sẽ tiếp tục từ chế độ nền và xuất hiện ở nền trước (ứng dụng chuyển sang nền trước), nhà phát triển nên sử dụng phương pháp này để tiếp tục mọi quy trình không hoạt động trong khi ứng dụng đã bị tắt. ở chế độ nền, các kết nối đến máy chủ phải được thiết lập lại, đặt lại bộ hẹn giờ, tải hình ảnh và dữ liệu vào bộ nhớ cũng như các quy trình cần thiết khác có thể tiếp tục ngay trước khi người dùng nhìn thấy lại ứng dụng đã tải.
applicationDidBecomeActive - trạng thái này cho biết ứng dụng vừa mới hoạt động sau khi được khôi phục về nền trước, đây là phương pháp có thể được sử dụng để thực hiện các điều chỉnh bổ sung cho giao diện người dùng hoặc khôi phục giao diện người dùng về trạng thái ban đầu, v.v. phương pháp này thực sự xảy ra khi người dùng đã có thể nhìn thấy trên màn hình, do đó cần phải xác định từ bảng cân đối kế toán những gì đang xảy ra trong phương pháp này và phương pháp trước đó. Chúng được gọi lần lượt với sự khác biệt vài mili giây.
applicationWillTerminate - trạng thái này xảy ra vài mili giây trước khi ứng dụng kết thúc, nghĩa là trước khi ứng dụng thực sự chấm dứt. Hoặc thủ công từ đa nhiệm hoặc khi tắt thiết bị. Phương pháp này nên được sử dụng để lưu dữ liệu đã xử lý và kết thúc mọi hoạt động cũng như xóa dữ liệu không còn cần thiết.
applicationDidReceiveMemoryWarning - và đây là điều kiện được thảo luận rất nhiều ở đây, nếu cần, iOS sẽ xóa ứng dụng khỏi bộ nhớ nếu nó sử dụng tài nguyên hệ thống một cách không cần thiết. Tôi không biết chính xác iOS làm gì với các ứng dụng nền, nhưng nếu nó cần một ứng dụng để giải phóng tài nguyên cho các quy trình khác, nó sẽ nhắc ứng dụng đó bằng cảnh báo bộ nhớ để giải phóng tài nguyên mà nó đang giữ. Vì vậy, phương pháp này được gọi trong ứng dụng và các nhà phát triển nên triển khai nó để ứng dụng giải phóng bộ nhớ mà nó có, lưu dữ liệu đã xử lý và xóa dữ liệu không cần thiết khỏi bộ nhớ, đồng thời giải phóng bộ nhớ một cách thỏa đáng. Đúng là nhiều nhà phát triển, chẳng hạn như những người mới bắt đầu, không nghĩ đến những điều như vậy hoặc không hiểu chúng, và khi đó có thể xảy ra trường hợp ứng dụng của họ gây nguy hiểm đến tuổi thọ pin và/hoặc tiêu tốn tài nguyên hệ thống một cách không cần thiết ngay cả ở chế độ nền. Tôi không biết iOS sẽ hoạt động như thế nào nếu ứng dụng không làm gì sau khi nhận được cảnh báo bộ nhớ và tiếp tục tiêu tốn tài nguyên hệ thống như trước.
Một số trạng thái và phương pháp liên quan này đứng sau toàn bộ quá trình "đa nhiệm" trong iOS... đó là một hệ thống tuyệt vời nếu các nhà phát triển không bỏ qua nhu cầu phải chịu trách nhiệm về những gì ứng dụng sẽ hiển thị trên thiết bị của người dùng nếu chúng được giảm thiểu hoặc nhận được cảnh báo từ hệ thống và hơn thế nữa…
Tôi hy vọng mô tả ngắn gọn này sẽ giúp bạn hiểu cách ứng dụng tham gia vào việc giúp mọi thứ hoạt động trơn tru. Vì vậy gần như có thể nói rằng đó là lỗi do người dùng sử dụng không đúng cách, có thể hiểu là - nếu bạn sử dụng hầu hết các ứng dụng miễn phí từ các nhà phát triển nghiệp dư với số lượng lớn, thiết bị iOS của bạn sẽ chạy tệ hơn so với khi bạn sử dụng số lượng lớn. số lượng ứng dụng miễn phí và trả phí từ các nhà phát triển có kinh nghiệm hoặc chuyên nghiệp. Điều này không có nghĩa là không có ngoại lệ trong cả hai vòng tròn. Ví dụ: Foursquare hoạt động khá kỳ lạ và khắt khe, đồng thời, người ta có thể mong đợi rằng họ là những nhà phát triển rất lành nghề, dành nhiều thời gian cho việc quản lý bộ nhớ và pin, nhưng điều ngược lại mới đúng. Vấn đề lớn nhất với 4SQ là giao tiếp với máy chủ, máy chủ thường xuyên bị treo và quá tải. Đây chỉ là một ví dụ về thực tế là ngay cả những ứng dụng nổi tiếng cũng có vấn đề, điều này không làm thay đổi sự thật rằng 4SQ là một dịch vụ tuyệt vời.
Chúc Táo vui vẻ!! :)
Chúng tôi đã thêm thông tin vào bài viết với sự cho phép của tác giả ;-)
Tôi xin lỗi, ENTER ở khắp mọi nơi giữa các đoạn văn, họ có thể làm điều gì đó ở đây để các nhận xét có ít nhất một chút ĐỊNH DẠNG VĂN BẢN ĐÀO TẠO.
ArnieX: cảm ơn vì nhận xét!!
Gửi Faramir: Tôi chỉ nói về vấn đề của bạn, tôi không biết liệu nó có giúp ích gì cho trường hợp của bạn không, nhưng tôi biết từ kinh nghiệm của bản thân rằng nếu bạn đóng ứng dụng (ở chế độ đa nhiệm) thì sẽ mất vài giây cho đến khi nó đóng lại, vì vậy nếu bạn tắt nó đi, tôi khuyên bạn nên đợi vài giây (tôi đợi khoảng 10 giây để chắc chắn) cho đến khi nó chắc chắn hoàn tất và chỉ sau đó tôi mới khởi động lại.
Không có chi;) Tôi sẽ sẵn lòng giúp đỡ nếu tôi có cơ hội đóng góp.
Với Meeb thì thế nào, khi tôi đăng nhập vào ICQ hoặc FB chat qua nó thì 10 phút sau nó tự động đăng xuất và tôi ngoại tuyến hay nó tiếp tục hoạt động? cảm ơn vì đã làm rõ: P
Sau mười phút, kết nối Internet của ứng dụng sẽ bị gián đoạn. Tuy nhiên, bạn sẽ vẫn trực tuyến trên máy chủ Meeba và bạn sẽ nhận được thông báo đẩy nếu ai đó viết thư cho bạn. Sau khi mở lại ứng dụng, kết nối sẽ được thiết lập trong giây lát và bạn có thể tiếp tục trò chuyện vui vẻ.
Vì vậy, nếu tôi hiểu chính xác bài viết bạn liên kết thì số liệu thống kê chỉ đề cập đến sự cố ứng dụng khi chúng khởi động, đây là một tỷ lệ khá nhỏ các trường hợp có thể xảy ra sự cố. Vì vậy, theo tôi, không thể kết luận từ “nghiên cứu” này rằng iOS kém ổn định hơn. Hơn nữa, người dịch bài báo lấy từ Forbes đã quên đề cập rằng công ty cung cấp dữ liệu về sự cố ứng dụng được hỗ trợ bởi Google, cùng với những công ty khác ("Crittercism, được hỗ trợ bởi Google Ventures,...").