一个项目中的多个应用程序 类

Multiple Application Classes in one Project

为了保存一些偏好,我使用 class EasyPreferences 。 由于该库,我需要第二个 Class 来扩展应用程序。

为了将它添加到清单中,我在这里发现了一个聪明的方法 solution。 太简单。很简单。

但出于某种原因,它对我不起作用。

我的第一个申请class:

package com.stack.overflow.network;

import android.app.Application;
import android.content.ContextWrapper;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import com.pixplicity.easyprefs.library.Prefs;

public class NetworkController extends Application {

    public static final String TAG = NetworkController.class.getSimpleName();

    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;
    //LruBitmapCache mLruBitmapCache;

    private static NetworkController mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized NetworkController getInstance() {
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    /*
    public ImageLoader getImageLoader() {
        getRequestQueue();
        if (mImageLoader == null) {
            getLruBitmapCache();
            mImageLoader = new ImageLoader(this.mRequestQueue, mLruBitmapCache);
        }

        return this.mImageLoader;
    }*/
/*
    public LruBitmapCache getLruBitmapCache() {
        if (mLruBitmapCache == null)
            mLruBitmapCache = new LruBitmapCache();
        return this.mLruBitmapCache;
    } */

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }

}

第二次申请class:

package com.stack.overflow.HelperClasses.SharedPreferences;

import com.stack.network.NetworkController;

public class PrefsApplication extends NetworkController {
    @Override
    public void onCreate() {
        super.onCreate();


 new Prefs.Builder()
                .setContext(getApplicationContext())
                .setMode(ContextWrapper.MODE_PRIVATE)
                .setPrefsName(getPackageName())
                .setUseDefaultSharedPreference(true)
                .build();
    }

}

当我将 Prefs.Builder() 移动到网络控制器的 onCreate() 方法中时,一切正常。但如果它保存在自己的 class PrefsApplication 中则不会。我不明白为什么。

在 AndroidManifest.xml 中是 Class NetworkController 命名的。

没必要,Android 您的应用程序只能处理 1 个应用程序 class 否则您需要多个应用程序,因此您必须从 [=] 扩展 B_Application class 13=] class.