1a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden/*
2a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Copyright (C) 2009 The Android Open Source Project
3a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden *
4a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Licensed under the Apache License, Version 2.0 (the "License");
5a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * you may not use this file except in compliance with the License.
6a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * You may obtain a copy of the License at
7a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden *
8a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden *      http://www.apache.org/licenses/LICENSE-2.0
9a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden *
10a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Unless required by applicable law or agreed to in writing, software
11a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * distributed under the License is distributed on an "AS IS" BASIS,
12a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * See the License for the specific language governing permissions and
14a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * limitations under the License.
15a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden */
16a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
17a297c650185818b136099b5a3cc9689671e64cf5Andy McFaddenpublic class Main {
18a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    Bitmap mBitmap1, mBitmap2, mBitmap3, mBitmap4;
19a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
20a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    public static void sleep(int ms) {
21a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        try {
22a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden            Thread.sleep(ms);
23a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        } catch (InterruptedException ie) {
24a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden            System.err.println("sleep interrupted");
25a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        }
26a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    }
27a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
28a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    public static void main(String args[]) {
29a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("start");
30a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
31a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        Main main = new Main();
32a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        main.run();
33a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
34a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(1000);
35a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("done");
36a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    }
37a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
38a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    public void run() {
39a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        createBitmaps();
40a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
41a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.gc();
42a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(250);
43a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
44a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap2.drawAt(0, 0);
45a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
46a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("nulling 1");
47a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap1 = null;
48a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.gc();
49a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(500);
50a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
51a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("nulling 2");
52a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap2 = null;
53a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.gc();
54a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(500);
55a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
56a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("nulling 3");
57a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap3 = null;
58a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.gc();
59a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(500);
60a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
61a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.out.println("nulling 4");
62a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap4 = null;
63a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        System.gc();
64a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        sleep(500);
65a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
66a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        Bitmap.shutDown();
67a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    }
68a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden
69a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    /*
70a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     * Create bitmaps.
71a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     *
72a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     * bitmap1 is 10x10 and unique
73a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     * bitmap2 and bitmap3 are 20x20 and share the same storage.
74a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     * bitmap4 is just another reference to bitmap3
75a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     *
76a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     * When we return there should be no local refs lurking on the stack.
77a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden     */
78a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    public void createBitmaps() {
79a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        Bitmap.NativeWrapper dataA = Bitmap.allocNativeStorage(10, 10);
80a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        Bitmap.NativeWrapper dataB = Bitmap.allocNativeStorage(20, 20);
81a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap1 = new Bitmap("one", 10, 10, dataA);
82a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap2 = new Bitmap("two", 20, 20, dataB);
83a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden        mBitmap3 = mBitmap4 = new Bitmap("three/four", 20, 20, dataB);
84a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden    }
85a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden}
86