Tại sao pin của iPhone không đóng ứng dụng lại tốt hơn?


51

Tôi biết rõ ràng không nên đóng ứng dụng trên iPhone để tiết kiệm pin. Tôi đã đọc các câu hỏi và câu trả lời như việc buộc các ứng dụng đóng có lợi ích gì trên thiết bị iOS không? nhưng nó vẫn không hoàn toàn bằng gel với tôi. Đôi khi tôi đã tìm thấy hơn 50 ứng dụng đang chạy, vì vậy việc không đóng chúng không có ý nghĩa gì.

Có thể tôi là một chút chook cũ và bạn không thể dạy cho những con chó già những mánh khóe mới, nhưng ai đó ở đây có thể giải thích TẠI SAO tốt hơn là cứ để tất cả các ứng dụng này chạy? Và khi tôi nói tiếng Nhật giải thích, tôi có nghĩa là theo cách nói của giáo dân để tôi có thể hiểu.


31
Quan niệm sai lầm là phần “đang chạy. Các ứng dụng trong Trình chuyển đổi không nhất thiết phải chạy, hầu hết trong số chúng thực sự không hoạt động. Hãy nghĩ về nó nhiều hơn như một danh sách được sử dụng gần đây nhất hơn là một trình theo dõi quá trình
nohillside

3
Giống như patrix, tôi muốn thêm rằng iOS tự đóng các ứng dụng khi hết bộ nhớ, vì vậy mặc dù có vẻ như 50 ứng dụng đang "chạy", nếu bạn đang xem video thì rất có thể 49 người kia thực sự bị chấm dứt sau 2/3 phút. Trình chuyển đổi ứng dụng chỉ hiển thị một bản chụp màn hình gần đây của các ứng dụng đó vào thời điểm này.
Khỉ mã hóa

5
@CodingMonkey Tôi hầu như đồng ý với nhận xét của bạn, tuy nhiên một điều tôi làm rõ là 49 người kia sẽ không bị chấm dứt, họ sẽ bị đình chỉ. Sự khác biệt là khi một ứng dụng bị chấm dứt, nó không còn tồn tại trong bộ nhớ, trong khi bị treo có nghĩa là nó không hiển thị trên màn hình, cũng không phải là mã thực thi. Ở trạng thái này, nó không sử dụng bộ xử lý hoặc pin, nhưng vẫn còn trong bộ nhớ. Tuy nhiên, tất cả những gì đã nói, sử dụng ví dụ của bạn, tôi đoán rằng iOS thực sự có thể chấm dứt một số 49 ứng dụng khác, nhưng giữ hầu hết các ứng dụng đó ở trạng thái treo.
Monomeeth

8
Có lẽ chúng ta cần phải giải quyết con voi trong phòng - điều khiến bạn nói "chỉ cần giữ tất cả các ứng dụng này chạy" - và cụ thể là "đóng ứng dụng" - iOS 11 chạy tối đa ba ứng dụng và một số ứng dụng có kích hoạt nền định kỳ (theo thiết kế ) nếu chúng ta đang nói về HĐH theo nghĩa rộng / giáo dân. Nếu điều này có nghĩa là để giải quyết cuộc tranh luận về việc có nên xóa hình thu nhỏ của hình ảnh ứng dụng đã lưu khỏi Giao diện người dùng đa nhiệm hay không - hãy làm rõ điều đó trong câu hỏi.
bmike

3
Tôi thực sự kinh hoàng với bạn bè của mình khi có (ngay bây giờ) 314 lượt truy cập Tôi safari và 57 ứng dụng.
Tim

Câu trả lời:


64

Bạn không cô đơn. Mọi người chỉ quen với thói quen sử dụng máy tính để bàn của họ và có thể hiểu rằng họ mang những thói quen này trên iPhone và iPad.

Tuy nhiên, hãy để tôi thử và giải thích điều này bằng cách sử dụng một sự tương tự:

Hãy tưởng tượng đó là một ngày nóng và bạn đang ở ngoài vườn. Bạn khát nước, vì vậy bạn đi vào nhà bếp, lấy một cái ly lớn, đặt một ít đá vào đó và đổ đầy nước. Sau đó, bạn uống một nửa và đổ phần còn lại vào bồn rửa trước khi quay trở ra ngoài. Không lâu sau, bạn lại khát nước, vì vậy bạn quay trở lại nhà bếp, lấy cùng một ly, đặt một ít đá vào đó và đổ đầy nước. Một lần nữa bạn chỉ uống một nửa số đó và đổ phần còn lại vào bồn rửa!

Quy trình làm việc trên chỉ không thực sự có ý nghĩa. Tại sao bạn không mang kính bên ngoài? Và, bạn không chỉ lãng phí nước bằng cách làm rỗng nó, mà bạn còn dành nhiều thời gian và năng lượng hơn để lấy lại lượng nước đó.

Tương tự như vậy, khi bạn thoát một ứng dụng, bạn thực sự đang sử dụng một số năng lượng pin trong quá trình thực hiện (ví dụ: xóa nó khỏi RAM, v.v.) và sau đó một lần nữa khi bạn phải khởi chạy lại và tải lại vào RAM.

Vì vậy, trong phần lớn thời gian, tốt nhất là để các ứng dụng mở. Mặc dù chúng mở, nhưng chúng thực sự chỉ ngồi trong một loại chế độ treo không sử dụng bất kỳ nguồn pin nào. Vâng, các ứng dụng vẫn đang được nạp trong bộ nhớ RAM và lấy không gian , nhưng nó không thực sự làm bất cứ điều gì - nó chỉ nằm đó im lìm. Và, vì nó không sử dụng bất kỳ năng lượng pin nào trong trạng thái này, nên không có lợi thế nào để thoát khỏi quan điểm bảo tồn pin - đặc biệt nếu đó là ứng dụng mà bạn biết bạn sẽ sử dụng nhiều lần trong suốt cả ngày.

Thực sự cũng không có lợi thế gì khi buộc phải thoát khỏi một ứng dụng vì chính iOS sẽ làm điều này cho bạn nếu / khi cần để giải phóng RAM. Vì vậy, nếu bạn có 50 ứng dụng mở và chúng vẫn mở, thì iOS đã không bị đẩy đến mức cần phải đóng bất kỳ ứng dụng nào để giải phóng bộ nhớ.

Bây giờ, giống như mọi thứ, luôn có ngoại lệ cho quy tắc (chẳng hạn như các ứng dụng phải thực hiện các tác vụ nền). Một ví dụ về điều này là một trò chơi phát nhạc trong khi bạn đang làm những việc khác với điện thoại của mình hoặc một trong đó đang tải xuống nội dung ở chế độ nền hoặc một trong đó là đếm bao nhiêu bước bạn đi trong một ngày, v.v. Tuy nhiên, iOS có một bước cực kỳ quy trình hiệu quả để quản lý các ứng dụng / tác vụ nền và nếu bạn chọn thoát khỏi những ứng dụng này thì về cơ bản bạn nói rằng bạn không tin tưởng hệ điều hành để thực hiện đúng công việc của mình.

Vì vậy, hãy thoải mái thoát khỏi ứng dụng của bạn khi bạn phải (ví dụ vì nó bị đóng băng, v.v.), nhưng đừng làm điều đó để tiết kiệm pin. Trên thực tế, nếu bạn làm như vậy, bạn sẽ đạt được điều ngược lại và sử dụng nhiều năng lượng pin hơn trong suốt cả ngày!

Tóm lược

  • Bạn chỉ cần thoát ứng dụng nếu chúng không hoạt động chính xác (ví dụ: ứng dụng đã bị đóng băng, ứng dụng không hiển thị đúng cách, v.v.).
  • Các ứng dụng được liệt kê trong Trình chuyển đổi ứng dụng không nhất thiết phải chạy - thực tế hầu hết chúng không chạy .
  • Hầu hết các ứng dụng trong Trình chuyển đổi ứng dụng sẽ ở trạng thái treo - điều này có nghĩa là chúng không hiển thị: hiển thị trên màn hình, thực thi mã, sử dụng CPU hoặc GPU hoặc sử dụng pin. Tuy nhiên, họ vẫn thường trú trong bộ nhớ cho đến khi chúng bị xóa (nếu cần thiết) bởi hệ thống để giải phóng bộ nhớ:

    Bị treo - Ứng dụng ở chế độ nền nhưng không thực thi mã. Hệ thống tự động chuyển các ứng dụng sang trạng thái này và không thông báo cho chúng trước khi thực hiện. Trong khi bị treo, một ứng dụng vẫn còn trong bộ nhớ nhưng không thực thi bất kỳ mã nào. Khi xảy ra tình trạng bộ nhớ thấp, hệ thống có thể lọc các ứng dụng bị treo mà không cần thông báo để tạo thêm không gian cho ứng dụng nền trước.

    Nguồn : Xem Bảng 2-3 trong liên kết tham chiếu đầu tiên ở cuối câu trả lời này.

  • Các ứng dụng duy nhất thực sự chạy trên iPhone của bạn tại bất kỳ thời điểm cụ thể nào là ứng dụng đang hoạt động (tức là ứng dụng hiển thị trên màn hình) và bất kỳ ứng dụng nào hoạt động ở chế độ nền . ( Lưu ý: Có một số ngoại lệ tạm thời đối với điều này trong trường hợp các ứng dụng vẫn cần thời gian để hoàn thành mã thực thi mà chúng đã bắt đầu khi chúng hoạt động - thông thường, điều này chỉ diễn ra trong vài giây nhưng về mặt lý thuyết có thể kéo dài đến hơn một phút.) .

  • Đối với các ứng dụng đang chạy trong nền, bạn có thể kiểm soát ứng dụng nào được phép làm như vậy (nếu chúng đang mở) bằng cách đi tới Cài đặt> Chung> Làm mới ứng dụng nền. ( Lưu ý: Chỉ vì bạn thấy một ứng dụng được liệt kê ở đây không có nghĩa là nó sẽ chạy trong nền, nhưng vô hiệu hóa nó ở đây có nghĩa là nó chắc chắn sẽ không!)
  • Nếu iPhone của bạn bị khóa, thì ứng dụng đã hoạt động (nghĩa là nó hiển thị trên màn hình) khi bạn khóa thiết bị của bạn hiện không hoạt động . Tuy nhiên, trừ khi bạn chỉ khóa iPhone của mình và nó vẫn đang hoàn tất mã thực thi hoặc nó đang chạy ẩn (ví dụ: phát nhạc, v.v.) thì nó không sử dụng CPU, GPU hoặc pin.

Người giới thiệu

  1. Để biết thêm thông tin về các trạng thái khác nhau mà một ứng dụng có thể có, hãy tham khảo Hướng dẫn lập trình ứng dụng của Apple cho iOS: Các trạng thái thực thi cho ứng dụng .
  2. Để biết thêm thông tin về các ứng dụng chạy nền, hãy tham khảo Hướng dẫn lập trình ứng dụng của Apple cho iOS: Thực thi nền .

9
Vì vậy, nếu bạn có 50 ứng dụng mở và chúng vẫn mở, thì iOS đã không bị đẩy đến mức cần phải đóng bất kỳ ứng dụng nào để giải phóng bộ nhớ Để rõ ràng, không có cách nào bạn có thể biết liệu các ứng dụng trong ứng dụng có trình chuyển đổi có thực sự mở (nghĩa là cư trú trong bộ nhớ) hay không.
MJeffryes

24
Điều gì làm cạn kiệt pin đang bắt đầu lại ứng dụng . Đình chỉ một ứng dụng là giá rẻ. Tiếp tục một ứng dụng bị đình chỉ là giá rẻ. Nhưng cần tải hoàn toàn ứng dụng từ đầu cần rất nhiều tài nguyên (ngay cả khi một số trong số chúng vẫn có thể được lưu trong bộ nhớ cache): HĐH cần tải ứng dụng và tất cả các khung phụ thuộc của nó, mã khởi động ứng dụng hoàn chỉnh cần chạy lại, v.v. .
DarkDust

5
Tôi đã luôn nghĩ rằng trình chuyển đổi liệt kê tất cả các ứng dụng đã mở trên điện thoại đến một giới hạn tối đa, theo thứ tự chúng được sử dụng lần cuối, bất kể chúng có trong bộ nhớ hay không. Nếu tôi cuộn lại đủ xa, việc chuyển sang một ứng dụng sẽ gây ra một khoảng dừng khá dài vì (tôi giả sử) ứng dụng được tải từ đĩa. Có tài liệu nào xác nhận quan điểm của bạn về hành vi của nó không?
MJeffryes

7
Đây là một câu trả lời hữu ích, nhưng không có cách nào iOS giữ tất cả 50 ứng dụng bị treo, trừ khi mỗi ứng dụng có dấu chân bộ nhớ siêu nhỏ thực sự. Tôi chuyển đổi giữa các ứng dụng lớn cả ngày (Safari, twitter, Facebook, Reddit, YouTube, v.v.) và tôi thường nhận được "tải lại đầy đủ" chuyển trở lại một ứng dụng chỉ trong 2 hoặc 3 thẻ trong danh sách được sử dụng gần đây nhất.
BradC

3
@Monomeeth Rất nhiều ứng dụng bị chấm dứt hiệu quả - tức là yêu cầu tải lại đầy đủ để tiếp tục - nằm trong trình chuyển đổi ứng dụng. iOS sẽ không hoàn toàn chấm dứt, tôi không tin, trừ khi có sự cố - nó chỉ nằm trong trình chuyển đổi ứng dụng, không lưu lại trong bộ nhớ và ít nhiều thuận tiện để truy cập dễ dàng hơn.
Joe

22

Các câu trả lời được cung cấp là chính xác, tôi chỉ muốn làm rõ từ quan điểm của một nhà phát triển iOS.

iOS được thiết kế để quản lý càng nhiều thứ càng tốt để bạn (và nhà phát triển) không phải lo lắng về chúng. Kết quả cuối cùng là một cách tiếp cận có phần nhất quán trên các ứng dụng, bao gồm cả những ứng dụng từ Apple (thậm chí đôi khi chính Apple cũng cắt giảm một số góc).

Điều đó đang được nói, tiền đề là:

  • iOS biết nhiều về bộ nhớ hơn chúng ta. Nó biết nó có bao nhiêu, và nó cần bao nhiêu (ở một mức độ nhất định).
  • iOS có toàn quyền kiểm soát bộ nhớ; Nó có từ cuối cùng về người sử dụng cái gì.
  • Nếu iOS cần bộ nhớ, nó sẽ tìm thấy nó và điều này thường được thực hiện bằng cách giết các quá trình khác đã không hoạt động trong một thời gian (và có nhiều quy tắc đằng sau hậu trường, chúng tôi không biết tất cả và chúng tôi không thực sự biết lo lắng về họ).
  • Mọi thứ Bộ xử lý (CPU) làm, đều tốn năng lượng. Hoàn toàn là tất cả. Đừng quên máy tính chỉ là những thùng chứa điện tử rất nhỏ di chuyển chúng xung quanh trong không gian rất nhỏ.
  • Khi một ứng dụng bị giết, có một số giao thức (hợp đồng) đã thỏa thuận xác định những gì cần phải thực hiện. iOS thực thi và mang các giao thức này. Nhưng công việc phải được thực hiện, nó không miễn phí và chắc chắn không phải lúc nào cũng rẻ (nó thực sự phụ thuộc vào ứng dụng là gì).

Như đã nói, người ta cho rằng hầu hết người dùng đóng các ứng dụng với hy vọng tăng tuổi thọ pin, theo ấn tượng rằng, bằng cách đóng mọi thứ, thì sẽ lãng phí ít năng lượng hơn trong việc duy trì các ứng dụng này chạy.

Sự thật là, trên iOS, điều này gần như không bao giờ xảy ra. Khi bạn nhấn home, ứng dụng sẽ bị treo và nó không còn sử dụng các tài nguyên mà ứng dụng khác có thể cần. Nếu một ứng dụng mới (hoặc thậm chí iOS) cần bộ nhớ đó, nó sẽ tự chăm sóc nó, nhưng chỉ khi nó cần.

Bạn đóng ứng dụng nhiều lần, buộc iOS phải thực hiện nhiệm vụ đắt đỏ đó là thực sự dỡ tải ứng dụng, lưu trạng thái và không, với vấn đề được thêm vào là khi bạn mở lại ứng dụng, tất cả những thứ đó phải được hoàn nguyên và, tùy thuộc vào độ phức tạp của ứng dụng, rất nhiều thứ phải được đọc từ bộ lưu trữ, vào bộ nhớ chính của điện thoại, v.v. Tất cả công việc làm thêm này, có thể tránh được nếu bạn chỉ để ứng dụng ở trạng thái bị treo lơ lửng.

Tuy nhiên ...

Trong một số trường hợp (và chúng rất hiếm nhưng không hiếm khi xảy ra), bạn muốn giết các ứng dụng hoạt động sai. Ví dụ là (nhưng không giới hạn): Các ứng dụng xử lý âm thanh nền hoặc các dịch vụ không đồng bộ như vị trí (nơi ứng dụng yêu cầu vị trí và iOS phải đi và hỏi xung quanh vị trí của nó, ví dụ, bằng cách bắn GPS nếu cần) , truyền phát video, v.v.

Tôi đã có vô số trường hợp ứng dụng như Lyft, United Airlines, thậm chí Twitter, kết thúc ở trạng thái bị hỏng (hoặc đơn giản là không hoạt động đúng cách), vì bạn đang ở trong một mạng xấu (iOS đã rất tệ phục hồi từ một số mạng xấu trong 3-4 bản phát hành vừa qua) hoặc mạng đơn giản là không đáp ứng đúng.

Theo thời gian, hầu hết các vấn đề này có xu hướng biến mất và ứng dụng bắt đầu hoạt động trở lại; nhưng nếu bạn thực sự cần ứng dụng hoạt động ngay bây giờ , thì bạn phải tiếp tục và trả giá khi phải giết nó và khởi động lại từ đầu. Bạn đã sử dụng nhiều pin hơn bằng cách đó, nhưng, hey, bạn cần nó.

Và nếu điều này gây nhầm lẫn, tôi có thể cung cấp cho bạn một sự tương tự xe hơi, bởi vì đó là những gì chúng ta có xu hướng làm mọi lúc.

Tương tự xe

Tôi biết rằng công nghệ xe hơi đã tiên tiến và đây không còn là một ví dụ hay, nhưng hãy chơi với tôi ở đây .

Bắn động cơ của Ô tô được sử dụng để sử dụng nhiều nhiên liệu hơn là chỉ chạy không tải. Khi xe hơi có bộ chế hòa khí thay vì kim phun, điều này thậm chí còn tồi tệ hơn; đó là lý do tại sao tắt động cơ của bạn khi bạn dừng ở đèn đỏ, về mặt lý thuyết có thể sử dụng nhiều nhiên liệu hơn là không hoạt động trong một phút. Những chiếc xe mới hơn có cơ chế hiệu quả hơn nhiều và có thể dừng động cơ, nhưng vẫn ở trạng thái bán khởi động (chúng ta đừng đi vào xe hơi ở đây).

Bạn đóng ứng dụng, tương đương với một người tắt xe ở mỗi đèn dừng. Trái ngược với việc chỉ để nó nhàn rỗi cho đến khi bạn cần lại, thông thường vài giây sau.

Sự tương tự là không hoàn hảo, vì sự thật là, những chiếc xe nhàn rỗi vẫn sử dụng nhiên liệu, trong khi các ứng dụng bị treo thì không; tuy nhiên, trong mắt của điện thoại, họ không sử dụng bất cứ thứ gì liên quan đến bộ nhớ / pin (miễn là họ không có xử lý nền của bất kỳ loại hoạt động nào, rõ ràng).

Về cơ bản, bạn tắt động cơ mỗi khi bạn tắt ứng dụng và bạn sẽ không để cơ chế thông minh iOS iOS thông minh không hoạt động, vì vậy khi đèn chuyển sang màu xanh lá cây, bạn chỉ cần nhấn nút tăng tốc và động cơ đang chạy nhanh hơn nếu nó dừng 100%. Khởi động một động cơ từ trạng thái dừng, cũng sử dụng nhiều năng lượng hơn chỉ là nhiên liệu, bạn cần phải khởi động để động cơ có thể được quay, phun nhiên liệu và tia lửa được tạo ra, vì vậy, đó là rất nhiều công việc đằng sau hậu trường. Ứng dụng giống như động cơ. :)


1
Haha, tôi thích sự tương tự (và câu trả lời của bạn). :)
Monomeeth

Câu hỏi về nhận xét của bạn: ứng dụng hoạt động sai: "[...] nếu bạn thực sự cần ứng dụng hoạt động ngay bây giờ, thì bạn phải tiếp tục và trả giá khi phải giết nó và khởi động lại từ đầu. Bạn đã sử dụng nhiều pin hơn bằng cách đó [...] "Bạn có tin rằng điều này sẽ lãng phí hơn không? Mặc dù tôi không thoát khỏi các ứng dụng theo cách khác, tôi thường cho rằng một ứng dụng bị treo hoặc gặp rắc rối có khả năng tiêu tốn rất nhiều tài nguyên bằng cách liên tục thử và không làm bất cứ điều gì nó muốn làm. Tôi thấy rằng điều này có thể ít chuyên sâu hơn so với bắt đầu lại từ đầu, bạn có tin rằng đó thường là trường hợp?
brhfl

1
@brhfl Thật khó để nói, mỗi ứng dụng là một thế giới khác nhau. Có một số dấu hiệu rõ ràng rằng một cái gì đó là sai. Nếu điện thoại của bạn trở nên rất nóng trong một khoảng thời gian ngắn trong khi bạn chỉ đang cố gắng sử dụng một ứng dụng, điều đó có thể có nghĩa là CPU đang được sử dụng, nếu điện thoại cảm thấy chậm chạp (ví dụ như bỏ qua hoạt hình). Đó là những dấu hiệu tốt cho thấy một cái gì đó đang sử dụng nhiều tài nguyên hơn mức cần thiết và trong những trường hợp đó, việc giết chết ứng dụng bị nghi ngờ là cách để đi. Nói chung, nếu một ứng dụng bị treo (nền) ngay cả khi nó không hoạt động tốt, nó sẽ không có lựa chọn nào khác ngoài cách cư xử; hoặc có nguy cơ bị iOS giết chết.
Martin Marconcini

1
  1. Nếu bạn buộc phải tắt hoàn toàn một ứng dụng, thì khi bạn cần mở lại sau đó, chi phí liên quan đến việc khởi chạy một phiên bản mới của ứng dụng sẽ tốn nhiều CPU hơn và tốn nhiều năng lượng hơn là chỉ chuyển từ ứng dụng này sang ứng dụng khác.
  2. Khi một ứng dụng chỉ ngồi đó trong bộ nhớ, trừ khi nó thực sự được xây dựng để chạy trong nền, nó thường bị tạm dừng hoặc bị giết và không tiêu thụ bất kỳ chu kỳ CPU nào (thường). Nếu đó là một ứng dụng khá đơn giản, thì nó sẽ chỉ sử dụng bộ nhớ. Trong trường hợp như vậy, trạng thái ứng dụng được duy trì ở một nơi khác (trên bộ nhớ thiết bị trong trường hợp của Android) để trạng thái ứng dụng có thể được khôi phục sau đó. Để cung cấp cho bạn một ý tưởng, một tin nhắn chưa được gửi khá dài mà tôi đã viết trong ứng dụng Viber trong điện thoại của tôi đã sống sót khi điện thoại bị tắt do hết pin. Sau khi khởi động lại điện thoại, sau đó là Viber, tôi tìm thấy tin nhắn đang chờ tôi gửi nó. Halleluja.
  3. Tùy thuộc vào chip bộ nhớ của bạn, việc nó có chứa số không hay số không sẽ tạo ra bất kỳ sự khác biệt đáng kể nào trong mức tiêu thụ năng lượng. Vì vậy, việc lưu giữ những thứ trong bộ nhớ sẽ không khiến bạn tiết kiệm pin đáng kể.
  4. Khi một ứng dụng đang ngủ cực sâu (các bạn, vui lòng xác nhận điều này), chỉ một tham chiếu đến nó sẽ hiển thị trong trình chuyển đổi ứng dụng dưới dạng ảnh chụp màn hình cuối cùng có thể nhìn thấy từ trước khi đi xuống. Tôi đang nói điều này bởi vì một ngày, tôi đã quyết định đóng tất cả các ứng dụng trong iPad của mình và tôi đã rất ngạc nhiên bởi số lượng ứng dụng tôi phải đóng. Đó là hơn 60 ứng dụng. Chúng không thể được lưu giữ trong bộ nhớ của iPad. Tôi thấy một số ứng dụng trong đó, đã được sử dụng vài tháng trước.

Tương tự như ... với chiếc xe của bạn, nếu bạn cần thực hiện quá nhiều điểm dừng trong ngày và tiếp tục dừng và khởi động động cơ, sẽ đến lúc pin sẽ cạn kiệt. Điều này có thể xảy ra nếu thời gian sạc trong khi bạn đang lái xe giữa các điểm dừng không đủ lâu để khôi phục lượng năng lượng khổng lồ bị hút ra khỏi pin mỗi khi bạn khởi động động cơ. Bên cạnh đó, nó không tốt cho người khởi động và tiêu thụ khí tổng thể. Đó là lý do tại sao nhiều tài xế xe tải giao hàng sẽ giữ cho động cơ không hoạt động trong thời gian dừng ngắn.

Sự tương tự này là IMO tương tự như huyền thoại tiết kiệm bộ nhớ.


-1

Chỉ cần đưa ra một ý kiến ​​khác nhau ra để thảo luận. Khái niệm này có một mức độ trung thực nhất định với nó, nhưng một khi bạn đã mở một số ứng dụng nhất định, bạn có thể sẽ bắt đầu thấy lợi nhuận giảm dần khi giữ các ứng dụng bị treo.

Bạn càng mở nhiều ứng dụng, rõ ràng ram sẽ càng được sử dụng nhiều hơn. Thông thường, mỗi ứng dụng trong bộ nhớ được chia thành bộ nhớ mà chính ứng dụng hiện đang sử dụng, bộ nhớ mà ứng dụng muốn có trong tay và bộ nhớ mà hệ điều hành thực sự cho phép ứng dụng sử dụng, cung cấp cho bạn bộ nhớ cuối cùng của ứng dụng được phép sử dụng. Lý do ứng dụng giữ một phần riêng biệt của bộ nhớ này là bộ nhớ mà nó muốn sử dụng, là vì ứng dụng có thể cần phải tăng lên rất nhiều, nhưng nó không nhất thiết muốn làm điều đó ngay lập tức vì điều đó không tốt cho người thu gom rác có nhiều đống lớn (đống lớn = bộ sưu tập rác dài hơn), vì vậy ứng dụng sẽ dành một phần bộ nhớ hiện không được sử dụng, nhưng ứng dụng chỉ có thể được sử dụng nếu có nhu cầu.

Giả sử HĐH cho phép ứng dụng của tôi lên tới 700mb và ứng dụng dành riêng 300mb bộ nhớ đó, để lại 400mb cho ứng dụng của tôi sử dụng nếu muốn, nhưng sau đó, một ứng dụng khác sẽ mở và cần một số bộ nhớ; HĐH xem xét tất cả các ứng dụng khác nhau và quyết định xem có nên lấy một số bộ nhớ từ một ứng dụng khác và sử dụng nó cho ứng dụng mới hay không, trong trường hợp này, nó có thể quyết định lấy 150mb từ bộ nhớ cho phép của ứng dụng của tôi và đưa nó vào ứng dụng mới , yêu cầu bộ nhớ được hoán đổi xung quanh để cung cấp cho bộ nhớ ứng dụng mới (hãy nghĩ rằng đây là sự phân bổ lại tiền trong một doanh nghiệp), bạn càng mở nhiều ứng dụng, hệ điều hành phải làm càng nhiều việc để quyết định thực sự bộ nhớ của ứng dụng nào nó có thể rút ra để cung cấp cho bộ nhớ ứng dụng mới.

Theo nghĩa này, mọi ứng dụng được mở và bị treo đều làm tăng thêm sự phức tạp cho quá trình này, khiến nó tốn nhiều CPU hơn và cuối cùng cần nhiều năng lượng pin hơn để mở các ứng dụng trong tương lai so với năng lượng pin được lưu bằng cách không đóng các ứng dụng khác.

Bây giờ hãy lưu ý bạn, không ai trong số đó cân nhắc rằng trừ khi bạn thực sự giết một ứng dụng, có thể có các dịch vụ nền đang chạy sẽ tiêu tốn năng lượng xử lý, ví dụ như các thông báo được đặt để thông báo cho bạn về bộ đếm thời gian, v.v. các ứng dụng không sử dụng dịch vụ nền thực sự và thực sự sử dụng thông báo đẩy từ các dịch vụ như firebase, không yêu cầu ứng dụng phải mở bất cứ lúc nào.

Một điều khác cần xem xét, càng mở nhiều ứng dụng, bộ nhớ ban đầu sẽ bị phân mảnh nhiều hơn cho đến khi HĐH đi qua và dọn dẹp bộ nhớ để sạch hơn và đặt ra hiệu quả hơn, chính điều này cũng làm tăng sức mạnh xử lý và Càng nhiều bộ nhớ bị chiếm dụng bởi các ứng dụng, quy trình này sẽ càng chuyên sâu hơn cho thiết bị của bạn.

Tất cả những điều này để nói, để các ứng dụng mở hầu hết hiệu quả hơn, trừ khi có quá nhiều ứng dụng được mở, tuy nhiên tôi không chắc có bao nhiêu ứng dụng cần được mở để đạt đến ngưỡng này, nếu số lượng tồn tại.

Nguồn:

Trình thu gom rác SGen cho Mono: http://www.mono-project.com/docs/advified/garbage-collector/sgen/

Tổng quan về trình lược tả bộ nhớ cho cả ứng dụng Xamarin trên iOS và Android, cho thấy cách quản lý bộ nhớ của ứng dụng (bộ làm việc, byte riêng, bộ nhớ được phân bổ, v.v.) https://blog.xamarin.com/say-hello-to -the-xamarin-profiler /


1
Tôi không chắc điều này là đúng - bạn có phải là nhà phát triển iOS không? Tôi tin rằng iOS có thể, theo quyết định riêng của mình, tiêu diệt các ứng dụng bị treo khi cần thiết để giải phóng bộ nhớ, nhưng tôi hoàn toàn nghi ngờ rằng nó có thể làm giảm một phần dung lượng bộ nhớ của ứng dụng bị treo. Ít nhất là một người dùng, nó dường như là tất cả hoặc không có gì.
BradC

2
Điều đó hoàn toàn đúng đối với hệ điều hành "đầy đủ" đang thực hiện đa nhiệm đồng thời các ứng dụng đang chạy hoàn toàn. Đó không phải là trường hợp của iOS (ngoại trừ cấu hình chia màn hình mới hơn). Tôi không nói tôi khẳng định bạn sai, tôi chỉ nói bản năng của bạn từ các hệ điều hành khác có thể không áp dụng ở đây.
BradC

1
Và IMHO bạn nhầm lẫn trình chuyển đổi ứng dụng với một danh sách „mở / / trong bộ nhớ ứng dụng. Đây rõ ràng là không phải như vậy, vì vậy bộ nhớ rất tốt có thể là tương tự cho một chiếc iPhone với 5 hoặc 20 ứng dụng trong switcher
nohillside

2
Quản lý bộ nhớ của khung công tác Mono / Xamarin không đại diện cho cách các ứng dụng / dịch vụ gốc hoạt động trên nền tảng iOS. Thời gian chạy iOS và Objective-C / Swift không triển khai thu gom rác.
Mike Mertsock

2
@TrevorHart nó sử dụng tính năng đếm tham chiếu tự động của nhà phát
Mateusz Szlosek

-2

Phiên bản cắt sạch: Sẽ tốt hơn vì HĐH được thiết kế để làm cho nó tốt hơn đến mức người dùng muốn giữ ứng dụng (hoặc ở trạng thái "treo") để thu thập thêm thông tin về hành động của bạn [*] sau Nếu cần thiết.

Phiên bản dài hơn: Các ứng dụng bị "treo" sẽ lưu trạng thái của chúng trong bộ nhớ, vì vậy một khi bạn muốn khởi động chúng, các quá trình tải lại mọi thứ sẽ cần ít thời gian hơn cho người quản lý và hầu như không sử dụng đơn vị lưu trữ ... Với điều này bạn không thể biết nếu ứng dụng của bạn đang làm một số thứ khác trong nền mà trong rất nhiều trường hợp họ ngồi đó thu thập dữ liệu về bạn.


[*] Để giải thích về việc thu thập dữ liệu trên phần của bạn ... các ứng dụng được lưu trữ trong bộ nhớ có thể bị "treo" hoặc hoạt động ở chế độ nền. Bạn là chủ sở hữu của thiết bị không thể biết (nếu bạn không có kiến ​​thức về và một số ứng dụng khác để chủ động quét việc sử dụng CPU) những gì ứng dụng nói thực sự đang làm. Từ quan điểm bảo mật, tôi khuyên bạn nên tắt bất kỳ ứng dụng nào bạn sẽ không sử dụng trong 10 phút tiếp theo.

PS Thực hành này được thực hiện trên các thiết bị Android cũng ...


6
-1 Câu trả lời này sẽ tốt hơn nếu nó không có chủ đề "điện thoại của bạn được thiết kế để theo dõi bạn".
Nzall

4
"Điện thoại của bạn được thiết kế để theo dõi bạn" không thực sự áp dụng cho các thiết bị của Apple - họ không kiếm tiền từ dữ liệu cá nhân.
wizzwizz4

1
@ wizzwizz4 Nói ai?
yo '

1
@yo 'Nói rằng tôi không thể tìm thấy bằng chứng để đề nghị họ làm như vậy. Giả sử đức tin tốt, và tất cả những điều đó.
wizzwizz4
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.