IOS đã làm gì trước khi đa nhiệm?


7

Đã có trình chuyển đổi ứng dụng hay bạn phải dừng ứng dụng và bắt đầu một ứng dụng mới?

Câu trả lời:


14

Trình chuyển đổi ứng dụng đi kèm với đa nhiệm giới hạn. Trước đó, bạn nhấn nút home và chương trình phía trước ngừng chạy.


1
oh, đó phải là khắc nghiệt.
Ian Warburton

8
Nó thực sự tốt hơn so với đa nhiệm thông qua iOS 7 và đôi khi, tôi vẫn ước chúng ta có một nhiệm vụ duy nhất. Phản ứng nhanh hơn với nhiều tác vụ, @IanWarburton cũng vậy, hình ảnh google của t637i sony ericsson - đó là những gì xuất hiện trước khi thực hiện một nhiệm vụ iOS.
bmike

@bmike googling cụm từ chính xác t637i sony ericsson mang đến rất nhiều liên kết tiếng Nga nhưng không có liên kết của điện thoại, v.v ... Đây có phải chỉ vì lịch sử tìm kiếm của tôi?
N.J.Dawson

@ N.J.Dawson Hãy thử liên kết này
bmike

23

FWIW, Apple luôn cho phép một số ứng dụng hoặc dịch vụ của riêng họ tồn tại trong nền, ví dụ như Điện thoại, Thư, thông báo đẩy, Tìm iPhone của tôi, v.v., dựa trên nhu cầu và chức năng.

Một điều cần xem xét là đa nhiệm ngày nay trên iOS vẫn còn hạn chế, đặc biệt là khi so sánh với các hệ điều hành máy tính để bàn (và có lẽ một số môi trường Android).

Bắt đầu với iOS 4, Apple mang đến cho bạn ảo tưởng rằng tất cả các ứng dụng của bạn đang chạy bằng cách tạo trình chuyển đổi ứng dụng. Mặc dù một số ứng dụng có thể vẫn đang chạy, nhưng hầu hết đều ở chế độ ngủ đông, tùy thuộc vào tác vụ nền nào họ đã đăng ký để chạy và RAM nào khả dụng.

Vòng đời ứng dụng thường hoạt động như thế này kể từ ngày đầu tiên:

  • Biểu tượng người dùng vòi
  • Màn hình khởi chạy được hiển thị
  • Màn hình đầu tiên (xem) được tải
  • Người dùng thực hiện công cụ với ứng dụng
  • Người dùng nhấn nút home (hoặc, với các phiên bản mới hơn, chạm vào màn hình của ứng dụng khác)
  • Ứng dụng đã mở trước đó nhận được tín hiệu rằng nó không còn ở phía trước
  • Ứng dụng nhận được tín hiệu rằng nó sắp bị treo
  • Ứng dụng bị treo (trạng thái được lưu trong RAM)
  • Trạng thái của ứng dụng được chuyển từ RAM sang đĩa (flash) khi RAM đầy
  • Người dùng quay lại ứng dụng
  • Nếu trạng thái đủ gần đây, trạng thái được tải lại từ RAM hoặc đĩa
  • Nếu trạng thái cũ, ứng dụng bắt đầu mới

Các vấn đề trong cách xử lý nhà nước đã thay đổi qua nhiều năm và các nhà phát triển ngày càng được kiểm soát nhiều hơn về những gì họ có thể làm ở giữa các bang.

Khi mọi người đi qua và "buộc đóng" tất cả các ứng dụng của họ, về cơ bản họ sẽ loại bỏ mọi trạng thái được lưu bởi ứng dụng và giết mọi tác vụ nền mà ứng dụng có thể đã bắt đầu. Nhiều người nghĩ rằng họ đang giúp giảm mức tiêu thụ pin và giữ RAM sạch, nhưng Craig Federighi chỉ ra rằng bằng cách đó họ thực sự có thể gây hao pin nhiều hơn, vì CPU đang làm nhiều hơn để mở lại các ứng dụng đó mỗi lần thay vì chỉ mang chúng ra ứ.

Cũng kể từ iOS 4, các nhà phát triển hiện được phép tạo các tác vụ có thể tồn tại ngay cả khi ứng dụng đã bị treo, như phát lại âm thanh, giám sát lưu lượng mạng (VoIP), làm mới dữ liệu nền và cập nhật vị trí. Điều này hiệu quả vì chỉ một phần của ứng dụng đang chạy và sử dụng tài nguyên.

Khi các thiết bị trở nên mạnh hơn (nhiều CPU hơn, nhiều RAM hơn, nhiều bộ nhớ hơn, pin lớn hơn) và khi mã trở nên hiệu quả hơn, các tác vụ bổ sung này chứng tỏ sẽ ít tiêu tốn tài nguyên hơn. Những thứ mới hơn như widget và các tiện ích mở rộng Siri, iMessage và CallKit sắp tới có thể khiến nó xuất hiện như các ứng dụng phổ biến luôn làm gì đó trong nền.


2
Xin lỗi, tôi tin rằng bạn đã sai. Bạn có tham chiếu cho khiếu nại của mình rằng trạng thái ứng dụng được lưu từ RAM vào đĩa không? Không có gì được lưu vào đĩa trừ khi lập trình viên làm điều đó.
Antzi

Antzi là chính xác, iOS không sử dụng không gian trao đổi. Khi thiết bị sắp hết bộ nhớ, thiết bị sẽ báo cho các ứng dụng giảm mức sử dụng bộ nhớ. Nếu họ không giải phóng đủ không gian, họ sẽ bị chấm dứt. Hệ điều hành không di chuyển dữ liệu từ bộ nhớ sang đĩa, nó hy vọng các ứng dụng sẽ làm điều này. developer.apple.com/l Library / mac / documentation / Formformance /
MJeffryes

Có lẽ tôi đã làm vấy bẩn vùng biển một chút trong nỗ lực đơn giản hóa của mình. Chắc chắn có một số loại bộ đệm đọc / ghi trong RAM để tăng tốc truy cập đĩa. Nếu ứng dụng có bất kỳ trạng thái nào để lưu trước khi nó bị chấm dứt, tôi sẽ mong HĐH đệm bộ đệm trạng thái của ứng dụng cho đến khi nó thấy phù hợp để xóa những ghi đó vào đĩa. Vì vậy, có, ứng dụng chịu trách nhiệm lưu bất kỳ trạng thái nào nó muốn (chế độ xem nào được mở, tài liệu nào ở phía trước, v.v.), nhưng nó trao dữ liệu đó cho HĐH, từ đó chuyển nó sang bộ nhớ vật lý.
Bryan Scott

7

Ban đầu, iOS không có đa nhiệm. Nỗ lực đầu tiên của họ là vào năm 2010 (tào lao thần thánh!). IPhone không có đủ ram và không được tối ưu hóa cho nó. Trong năm 2010, Apple đã kích hoạt các ứng dụng cốt lõi lên đa nhiệm, nhưng không phải bên thứ 3. Tôi nhớ đã bẻ khóa thiết bị của mình để bỏ qua việc cho phép tất cả các ứng dụng đa nhiệm, nhưng nó đã bị lỗi. iOS đã đi một chặng đường dài, với khả năng xử lý 64 bit và quản lý bộ nhớ tốt hơn.

Để đọc thêm, hãy xem Wikipedia bài báo.


1
Dựa trên OS X, iOS đã được xử lý đa luồng kể từ khi ra mắt. Đối với các nhà phát triển, nhóm các lớp NSOperation đã được công khai kể từ iPhoneOS 2 (SDK đầu tiên mà các nhà phát triển bên thứ 3 có quyền truy cập). Đối với bộ sưu tập rác, iOS không và chưa bao giờ hỗ trợ quản lý bộ nhớ bằng bộ sưu tập rác. Thay vào đó, iOS sử dụng quản lý bộ nhớ ARC (hoặc nếu nhà phát triển chọn họ có thể sử dụng quản lý bộ nhớ thủ công). Đây là một trong những lý do chính khiến các thiết bị iOS có khả năng cạnh tranh với thiết bị Android có RAM nhiều hơn đáng kể.
alexkent

Bạn đúng, sai điều khoản. Sửa câu trả lời của tôi.
megamaiku

1

Trước hết --- iOS là một hương vị Unix, rất giống với Mac OS, LUÔN LUÔN là "đa nhiệm" theo nghĩa sâu sắc nhất. Nhiều quy trình chạy đồng thời trên thiết bị iOS mọi lúc.

Điều hạn chế là TƯƠNG TÁC NGƯỜI DÙNG với các chương trình. Người dùng không thể tương tác với nhiều chương trình tại bất kỳ thời điểm nào.

Ngoài ra, ngay cả trong thời xưa, khi nhấn "nhà" là cần thiết để chuyển từ ứng dụng này sang ứng dụng khác - ứng dụng cũ KHÔNG bị giết. Nó đã được chuyển "xuống nền", có nghĩa là - nó không có quyền truy cập vào màn hình, bàn phím, máy ảnh, v.v. và nó chỉ có thể duy trì rất ít tài nguyên hệ thống khi ở trong nền.

Để thoát hoàn toàn Ứng dụng iOS, bạn phải nhấn đúp vào nút home và khi tất cả các ứng dụng đang chạy bắt đầu rung, bạn có thể nhấn "x" nhỏ để giết từng cái một. Chỉ sau đó các ứng dụng đã thực sự bị giết.

Lý do cho quyết định UI này là chỉ bằng cách này, Apple có thể đạt được khả năng đáp ứng và thời lượng pin tốt, với tài nguyên hệ thống rất hạn chế của các thiết bị iOS cũ.

Tình hình đã không thực sự thay đổi nhiều kể từ đó - chỉ trong các tình huống cụ thể, các ứng dụng nền nhận được ít tài nguyên hơn để tiếp tục (kết nối mạng trong nền, phát lại âm thanh trong BG, hình ảnh, v.v.).

Hệ thống đa nhiệm hơn bao giờ hết, nhưng UI cho phép các kịch bản phức tạp hơn của một ứng dụng hiển thị một phần cho người dùng cùng một lúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.