管理多个应用程序类 - Volley + MultiDex

时间:2016-03-09 11:37:55

标签: android android-studio networking android-volley

添加Google Play依赖项后,我的应用超过了65K的限制。所以我必须启用multidex并将其添加到清单

public class AppController extends Application {

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

private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;

private static AppController mInstance;

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

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

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

    return mRequestQueue;
}

public ImageLoader getImageLoader() {
    getRequestQueue();
    if (mImageLoader == null) {
        mImageLoader = new ImageLoader(this.mRequestQueue,
                new LruBitmapCache());
    }
    return this.mImageLoader;
}

public <T> void addToRequestQueue(Request<T> req, String tag) {
    // set the default tag if tag is empty
    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);
    }
}
}

但是还有一个单例类的排球可以扩展应用程序,因为我需要获得该类的上下文。

如何管理?有没有办法让凌空班静止?凌空类代码是:

AppController.getInstance().addToRequestQueue(strReq, "Making a request");

该课程的用法是:

sudo janus

如果它可以变为静态,那么该类的实现应该是什么来进行网络调用?

2 个答案:

答案 0 :(得分:0)

试试这个,只需在Appcontroller class.link:How to use MultiDex with a custom Application class?

中覆盖此方法
               @Override
      protected void attachBaseContext(Context base)
      {
        super.attachBaseContext(base);
        MultiDex.install(this);
       }

答案 1 :(得分:0)

使用

public class AppController扩展了MultiDexApplication

而不是

public class AppController扩展了Application