一个项目中的多个应用程序 类
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.
为了保存一些偏好,我使用 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.