2014-01-03 3 views
1

У меня есть приложение, которое отображает список фотоальбомов, а затем, как только альбом выбран, отображает фотографии в этом альбоме. Я использую реализацию кэша кэш-памяти/дискового кэша из одного из примеров Google (поскольку фотографии загружаются с веб-сайта). Все работает нормально, но инициализация кэша диска происходит каждый раз, когда выбран альбом, а инициализация занимает значительное время. Я хотел бы объявить дисковый кэш «глобально» и использовать его для всех альбомов. Я не эксперт в области Java и не понимаю, как это сделать, в частности, что вызываются различные действия, и я не могу просто передать ссылку на кеш при переключении с одного действия на другое. Должна ли вся логика кэширования строиться как «сервис», а затем «называться» по мере необходимости? Или есть другой и/или лучший/более элегантный способ сделать это?Как объявить ресурс глобально на Android

Спасибо,

+0

Это то же самое, как вопрос здесь: http://stackoverflow.com/questions/4924131/android-sharing-an-image-cache-between-activities? rq = 1 – Jim

ответ

2

Продлить Application класс.

Здесь вы пример:

public class MyApplication extends Application { 

    private static MyApplication singleInstance; 
    //TODO: Your fields here 

    public void onCreate() { 
     super.onCreate(); 
     MyApplication.singleInstance = (MyApplication)getApplicationContext(); 
     //TODO: Your initialization code here 
    } 

    public static MyApplication getStaticApplicationContext() { 
     return singleInstance; 
    } 

    //TODO: Your methods here 
} 

Там вы можете добавить свой кэш и соответствующий код.

Вы должны ссылаться на класс в файл AndroidManifest.xml, добавив атрибут android:name в application тег, например:

<manifest ...> 
    ... 
    <application ... 
     android:name="com.example.app.MyApplication"> 
    ... 
</manifest> 
+0

Спасибо, это именно то, что я искал. –

Смежные вопросы