Giải thích từ A đến Z về Force Stop và Clear Cache trên Android

Nếu bạn gặp vấn đề với một ứng dụng trên smartphone Android, bạn có lẽ đã từng nghe lời khuyên nên 'Force Stop' và sau đó 'Clear Cache' để khắc phục lỗi. Và quả thực đó có lẽ chính xác là những gì bạn cần làm. Nhưng tại sao lại nó lại hiệu quả đến thế? 'Force Stop' có tác dụng gì và cache là gì?

Force Stop

Trái tim của Android là nhân Linux, thành phần chịu trách nhiệm quản lý bộ nhớ và các tiến trình cùng với một loạt các tài nguyên khác. Bất kỳ khi nào bạn khởi động một ứng dụng, bạn thực ra đang khởi động một tiến trình Linux.

Một tiến trình là một container luận lý cho một chương trình (ứng dụng). Nó được khởi động bởi nhân và được sử dụng như một phương thức nhằm chia sẻ tài nguyên hệ thống (gồm bộ nhớ và thời gian CPU) giữa mọi ứng dụng đang chạy. Mỗi tiến trình có một ID, được gọi là PID (Process ID); một mức độ ưu tiên - tầm quan trọng của tiến trình đó; không gian địa chỉ của riêng nó cùng các trang bộ nhớ vật lý; và một số thông tin trạng thái gồm: đang chạy (hay có thể chạy), đang ngủ, đã dừng, và zombied.

Việc của nhân là lên lịch trình thời gian CPU và phân bổ bộ nhớ cho tiến trình để nó có thể chạy được. Phương thức hoạt động của nó là nhân đưa những lát thời gian CPU cho từng tiến trình đang chạy. Nếu một tiến trình đang ngủ (bởi nó đang đợi một thứ gì đó, như dữ liệu từ mạng chẳng hạn) thì nó không nhận được thời gian CPU nào. Những hành động diễn ra trong các tiến trình này ở tốc độ milli giây, rất nhanh, và như các khung hình của một bộ phim hoạt hình, thứ bạn nhận được là giao diện mượt mà và nhiều chương trình đang chạy cùng một lúc.

Cuối cùng, khi một ứng dụng thoát ra, nhân sẽ dọn dẹp mọi tài nguyên đã được sử dụng bởi nó (như các tập tin được mở, bộ nhớ đã được phân bổ...) và cuối cùng là xóa đi tiến trình được tạo ra bởi ứng dụng đó.

Mỗi ứng dụng có thể ở trong một trong nhiều trạng thái khác nhau: đang chạy, tạm ngừng hay đã dừng. Chúng là sự khác biệt giữa các trạng thái tiến trình, được định nghĩa bởi Linux, và trên Android được gọi là "Activity Lifecycle" (Vòng đời của Hoạt động). Google giải thích nó như sau: "Khi một người dùng di chuyển trong, ra ngoài, và quay lại ứng dụng, các phiên bản Activity trong ứng dụng chuyển dịch giữa các trạng thái khác nhau trong vòng đời của chúng".

Điều thú vị về Android là nó không bao giờ "giết" trực tiếp một ứng dụng. Thay vì đó, nó "giết" quy trình và hoạt động của ứng dụng đang chạy trong đó, phá hủy không chỉ hoạt động mà mọi thứ khác đang chạy bên trong. Nó còn làm điều này khi cần làm trống RAM hoặc một người dùng có thể "giết" một tiến trình bằng cách sử dụng tính năng "Force Stop" trong Application Manager.

Khi mọi thứ hoạt động mượt mà, một ứng dụng sẽ chuyển dịch từ một trạng thái hoạt động sang trạng thái khác, và cuối cùng sẽ bị "giết" bởi Android (sau khi chuyển sang trạng thái đã ngừng), hay nó sẽ vẫn lởn vởn dưới nền hệ thống cho tới khi người dùng kéo nó lên để sử dụng một lần nữa. Tuy nhiên, nếu mọi thứ bắt đầu gặp vấn đề, ứng dụng có thể hoạt động không như ý. Nó có thể ngừng phản hồi đối với một số sự kiện nhất định, mắc kẹt trong một vòng lặp, hay bắt đầu làm những điều không đoán trước được.

Trong những trường hợp như vậy, ứng dụng sẽ cần phải bị "giết" và sau đó khởi động lại. Đây chính là mục đích của tính năng "Force Stop": nó "giết" tiến trình Linux của ứng dụng và dọn dẹp đống lộn xộn còn sót lại.

Có 2 lý do tại sao người ta lại khuyên phải Force Stop khi bạn tìm cách khắc phục một ứng dụng hoạt động không như mong đợi:

1) Nó "giết" phiên bản đang chạy của một ứng dụng, và...

2) Nhờ Force Stop, ứng dụng sẽ không còn truy cập bất kỳ tập tin đệm (cache) nào nữa, cho phép chúng ta thực hiện bước thứ 2: dọn dẹp Cache (Clear Cache).

Clear Cache

Sau khi ứng dụng đã bị "giết", bước tiếp theo là xóa dữ liệu trong thư mục đệm. Khi một ứng dụng cần một tập tin tạm, một tập tin tiền xử lý, hay khi nó muốn giữ một bản sao trên máy của tập tin vừa tải về từ Internet, nó sẽ đặt tập tin đó vào thư mục đệm của ứng dụng. Mỗi ứng dụng có một thư mục đệm riêng để đặt các tập tin cần cho quá trình hoạt động.

Ý tưởng về thư mục đệm này như sau: nếu một ứng dụng tải tập tin hay dữ liệu từ Internet, thì sẽ rất phí phạm băng thông và tốn thời gian nếu phải tải đúng những tập tin như vậy mỗi lần khởi động ứng dụng. Thay vào đó, bất kỳ tập tin nào cần phải tải về từ Internet có thể chỉ cần tải một lần thôi, và sau đó lưu vào cache. Mỗi lần khởi động, ứng dụng có thể kiểm tra liệu những bản sao tạm thời đó có còn hiệu lực hay không và sẽ làm mới cache nếu thấy cần thiết.

Một ví dụ khác là nếu ứng dụng cần xử lý một tập tin, có thể là thực hiện giải mã hay mở khóa một số dữ liệu. Thay vì thực hiện công việc này mỗi lần mở ứng dụng - vốn sẽ sử dụng nhiều chu kỳ CPU - ứng dụng có thể làm việc đó một lần duy nhất và lưu trữ kết quả trong cache. Sau đó mỗi khi khởi chạy, ứng dụng có thể kiểm tra tính hợp lệ của tập tin đã xử lý và làm mới cache nếu thấy cần thiết.

Lý do chúng ta gọi các tập tin nói trên là tập tin tạm là bởi ứng dụng không phải lúc nào cũng có thể dựa vào các tập tin đó , khi mà Android có thể xóa chúng đi khi thiết bị rơi vào tình trạng thiếu dung lượng lưu trữ. Trong trường hợp đó, ứng dụng chỉ cần tải dữ liệu về lại, hoặc xử lý lại các tập tin và tạo ra những tập tin mới trong cache của nó.

Ứng dụng còn có thể lưu trữ các tập tin lâu dài bằng cách sử dụng thư mục "App Data". Thư mục này khác với thư mục cache và được thiết kế để lưu trữ các tập tin lâu dài của ứng dụng. Bởi Android có khả năng xóa các tập tin trong thư mục cache mà không cần thông báo với ứng dụng, người dùng có thể an toàn xóa các tập tin đó thông qua nút "Clear Cache".

Hành động này có thể giúp khắc phục các ứng dụng hoạt động không theo ý muốn bởi nó dọn dẹp sạch sẽ các tập tin tạm và buộc ứng dụng khởi tạo lại chúng, qua đó có một khởi đầu mới. Thường thì nó cũng giúp khắc phục vấn đề, bởi lỗi thường hiện diện trong quá trình xử lý các tập tin tạm hoặc tập tin đệm.

Một lợi ích khác của việc dọn dẹp cache là nó giúp giải phóng không gian lưu trữ của máy. Do đó nếu bạn đang thiếu bộ nhớ trong, bạn có thể xóa dữ liệu đệm của tất cả các ứng dung!

Tóm lại

Sau một vài thử nghiệm trong bản beta của Android P, phiên bản cuối cùng của hệ điều hành này vẫn giữ nguyên các nút bấm và chức năng "Force Stop" lẫn "Clear Cache" như trước đây. Bạn vẫn sẽ thấy chúng trong menu cài đặt của các ứng dụng.

Android 9.0 Pie thực ra có giới thiệu một số thứ mới, trong đó có tính năng tự động đóng các ứng dụng không phản hồi. Có nghĩa là bạn sẽ không phải buộc đóng các ứng dụng không phản hồi nữa, hệ thống sẽ xử lý mọi thứ tự động. Nhờ đó, người dùng sẽ không thấy các hộp thoại "app not responding" (ứng dụng không phản hồi, ANR) hiện ra để cảnh báo họ về một ứng dụng không phản hồi nếu họ chạy Android Pie nữa. Tuy nhiên, nếu vì lý do gì đó mà một ứng dụng ngừng phản hồi, người dùng Pie vẫn nên thử Force Stop và Clear Cache để "giết" ứng dụng và sau đó khởi động lại nó.

Minh.T.T

Tham khảo Android Authority

Nguồn VnReview: https://vnreview.vn/tu-van-di-dong/-/view_content/content/2578747/giai-thich-tu-a-den-z-ve-force-stop-va-clear-cache-tren-android