2013-05-08 36 views
17

Bất cứ khi nào tôi thực hiện bất kỳ ứng dụng nào, tôi luôn mã hóa chuỗi thay vì tham chiếu nó từ tài nguyên chuỗi từ XML. App hoạt động tốt nhưng mang lại cho tôi cảnh báo sử dụng @string nguồnViệc mã hóa chuỗi cứng có ảnh hưởng đến hiệu suất không?

nút Ví dụ:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click here" /> 

Câu hỏi của tôi là liệu nó sẽ ảnh hưởng đến hiệu suất ứng dụng của tôi nếu tôi làm như vậy hoặc nó (@string tài nguyên) chỉ được sử dụng cho quốc tế hóa .

+22

Bạn nhận được hiệu suất tồi tệ hơn từ (các) nhà phát triển, nếu bạn mã hóa chúng. ;) – AlbeyAmakiir

Trả lời

40

Đây là cảnh báo Android lint để giúp bạn bản địa hóa.

Các chuỗi mã hóa cứng, kỹ thuật sẽ làm cho ứng dụng của bạn hoạt động tốt hơn một chút, vì nó sẽ không phải tra cứu chuỗi từ mỗi lần tương ứng R int. Tuy nhiên, sự khác biệt về hiệu suất này sẽ không đáng kể, và không có con người nào có thể nhận ra nó.

Tuy nhiên, bạn nên luôn luôn giữ tài nguyên Chuỗi trong thư mục giá trị vì nó giúp việc bản địa hóa trở nên dễ dàng.

+1

Cũng đã nói. +1 - –

+0

+1 sự khác biệt có thể là trong vài giây ?? – Raghunandan

+1

@Raghunandan Yeah. Có lẽ trong khoảng 10-100 mili giây. –

4

Tôi không thấy lý do nào khiến bạn nhận được hiệu suất tồi tệ hơn bằng cách sử dụng chuỗi được mã hóa cứng. Có ít bước hơn liên quan đến các chuỗi được mã hóa cứng. Tuy nhiên, đó là cách thực hành tốt nhất để tách các chuỗi tài nguyên khỏi mã ứng dụng và giao diện người dùng.

4

Nó sẽ không tạo ra bất kỳ vấn đề hiệu suất nào. Nhưng việc xác định các chuỗi trong strings.xml được khuyến khích để dễ bảo trì và lolalization. Ví dụ, hãy xem xét hai trường hợp dưới đây.

Kịch bản 1

Khi bạn cần thay đổi một chuỗi được sử dụng ở nhiều nơi. Trong trường hợp của bạn, bạn sẽ phải thay đổi tất cả các "click here" trong tất cả các bố cục. Nhưng nếu bạn khai báo trong strings.xml thì chỉ thay đổi được thực hiện trong xml sẽ thay đổi tất cả.

Kịch bản 2

Ví dụ khác nếu bạn muốn hiển thị ngôn ngữ khác nhau cho miền địa phương khác nhau thì bạn cần phải sử dụng string.xml.

0

Ứng dụng của bạn sẽ không hỗ trợ Localization sau đó, nếu đó không phải là yêu cầu của ứng dụng của bạn thì sẽ không có vấn đề gì khi sử dụng chuỗi được mã hóa cứng.

1

Tôi không nghĩ hardcoding một chuỗi sẽ làm cho chương trình của bạn chạy chậm hơn .. Infact nó sẽ nâng cao hiệu suất vì không cần tìm kiếm String trong lớp R.java. Tham chiếu chuỗi từ strings.xml là thực hành tốt nhất do 2 lý do: -

1- Localization 2- nếu bạn đang sử dụng cùng một chuỗi ở nhiều nơi và muốn chỉnh sửa giống nhau ở tất cả các nơi giúp bạn tiết kiệm chi phí chỉnh sửa tất cả các chuỗi được mã hóa riêng lẻ.

1

Chuỗi mã hóa cứng sẽ không ảnh hưởng trực tiếp đến hiệu suất. Nó ảnh hưởng đến khả năng bảo trì.

Trong trường hợp bạn hardcode một chuỗi và trong giai đoạn sau nếu bạn muốn thay đổi chuỗi "Click tôi" để "thêm" hoặc cái gì khác, thì bạn cần phải tìm kiếm dự án hoàn chỉnh của bạn để thay đổi chuỗi ở đâu và tất cả nó Được sử dụng. Vì vậy, tốt hơn để làm theo strings.xml luôn. :)

4

Như những người khác đã nói, đó là để bản địa hóa, nhưng đối với hiệu suất, nó phụ thuộc vào số lần mỗi giây các chuỗi đó được tìm kiếm. Tôi đã nhìn thấy trường hợp ứng dụng khởi động chậm và việc lấy mẫu ngăn xếp cho thấy 50% thời gian đã được sử dụng để tra cứu tài nguyên chuỗi và lý do các chuỗi được tra cứu là hiển thị chúng trên màn hình giật gân cung cấp cho người dùng một cái gì đó để xem xét trong khi ứng dụng đang khởi động!

Các vấn đề liên quan