应用程序闲置时的Android异常

时间:2015-02-14 13:35:18

标签: java android android-activity

我有一个异常,在应用程序闲置一段时间后抛出异常。当我的应用程序试图引用我的单例字体类时,似乎总会发生这种情况。

我的单例类(TypefaceSingleton.java)用于从单个源引用Roboto字体。这是实际文件的缩小版本。我已经从堆栈跟踪中标记了该行。


TypefaceSingleton.java类

package com.steve.demo;

import android.content.Context;
import android.graphics.Typeface;
import android.view.View;

public class TypefaceSingleton {

    private static Context mContext;
    public static void initialize(Context context) {
        mContext = context;
    }


    private static  Typeface robotoCondensedBoldItalic;
    public static Typeface getRobotoCondensedBoldItalic() {
        if (robotoCondensedBoldItalic == null) {
            // (TypefaceSingleton.java:111) is below
            robotoCondensedBoldItalic = Typeface.createFromAsset(mContext.getAssets(), "fonts/Roboto/RobotoCondensed-BoldItalic.ttf");  
        }
        return robotoCondensedBoldItalic;
    }

    private static TypefaceSingleton mInstance;
    public static TypefaceSingleton getInstance() {
        if (mContext == null) {
            throw new IllegalArgumentException("This class must be initialized before");
        }

        if (mInstance == null) {
            mInstance = new TypefaceSingleton();
        }
        return mInstance;
    }

    private TypefaceSingleton() {
        // Todo here
    }

}

我只对的单例类进行初始化。我有一个执行初始化的splashscreen活动。


SplashScreenActivity.java

// Perform Initialization
TypefaceSingleton.initialize(mContext.getApplicationContext());
TypefaceSingleton.getInstance();

抛出的异常表示对TypefaceSingleton.getRobotoCondensedBoldItalic的空指针引用。


从开发人员控制台

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.steve.demo/com.steve.demo.RoutesActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2334)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$900(ActivityThread.java:169)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.steve.demo.TypefaceSingleton.getRobotoCondensedBoldItalic(TypefaceSingleton.java:111)
at com.steve.demo.RoutesActivity.setCustomActionBarTitle(RoutesActivity.java:130)
at com.steve.demo.RoutesActivity.onCreate(RoutesActivity.java:86)
at android.app.Activity.performCreate(Activity.java:5451)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
... 11 more

我确定问题必须与java处理内存(即垃圾收集?)但我不知道如何解决。

提前致谢。

史蒂夫

0 个答案:

没有答案