19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 177f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetpackage android.content.res; 18c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohet 19c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohetimport com.android.layoutlib.bridge.Bridge; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetManager; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class BridgeAssetManager extends AssetManager { 2499e1cdae99a99170011150d6827bf4c9ee63c075Xavier Ducrohet 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This initializes the static field {@link AssetManager#mSystem} which is used 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by methods who get a global asset manager using {@link AssetManager#getSystem()}. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * They will end up using our bridge asset manager. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p/> 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link Bridge} calls this method after setting up a new bridge. 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 337f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet public static AssetManager initSystem() { 349ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn if (!(AssetManager.sSystem instanceof BridgeAssetManager)) { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Note that AssetManager() creates a system AssetManager and we override it 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // with our BridgeAssetManager. 379ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn AssetManager.sSystem = new BridgeAssetManager(); 389ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn AssetManager.sSystem.makeStringBlocks(false); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn return AssetManager.sSystem; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4299e1cdae99a99170011150d6827bf4c9ee63c075Xavier Ducrohet 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn * Clears the static {@link AssetManager#sSystem} to make sure we don't leave objects 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * around that would prevent us from unloading the library. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 47c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohet public static void clearSystem() { 489ddb7df88a62a131519264f75f5d6616ee11b6e6Dianne Hackborn AssetManager.sSystem = null; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5099e1cdae99a99170011150d6827bf4c9ee63c075Xavier Ducrohet 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private BridgeAssetManager() { 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 54