Đây là cách tôi tiếp cận các nguồn lực từ bên trong phương pháp tĩnh. Có lẽ không lý tưởng, nhưng.
Trước tiên, tôi mở rộng ứng dụng và thiết lập một số lĩnh vực public static (s), và tạo ra một phương pháp để khởi chúng:
public class MyApp extends Application {
// static resources
public static String APP_NAME;
public static void initResources(Context context) {
APP_NAME = context.getResources().getString(R.string.app_name);
}
}
Và trong manifest của tôi, tôi đăng ký các ứng dụng mở rộng:
<application
android:name=".MyApp"/>
Trong hoạt động khởi động của tôi (MainActivity), tôi thực hiện cuộc gọi để khởi tạo các tài nguyên tĩnh:
@Override
protected void onCreate(Bundle savedInstanceState) {
MyApp.initResources(this);
}
Sau đó, bất cứ nơi nào trong dự án của bạn, sau MainActivity.onCreate (Bundle b) đã chạy, bạn có thể gọi phương thức tĩnh để truy cập vào các tài nguyên tĩnh định của bạn:
public static void printAppName() {
Log.w("tag", "my app name: " + MyApp.APP_NAME);
}
Đây có thể là một ý tưởng tồi. Nếu bạn đang lưu trữ các tham chiếu đến các ngữ cảnh, bạn có thể gây ra rò rỉ bộ nhớ – Falmarri
Điều gì khiến bạn nghĩ rằng tôi đề xuất lưu trữ một tham chiếu Ngữ cảnh? –
@Falmarri: bạn luôn có thể sử dụng 'getApplicationContext()', sau đó sẽ hợp lệ toàn bộ thời gian ứng dụng –