我的应用程序中有一个singleton对象。public class Single {
private Context mContext;
private static Single sInstance;
public synchronized static Single getInstance(Context context) {
if(sInstance == null) {
sInstance = new Single(context);
}
return sInstance;
}
private Single(Context context) {
mContext = context;
}
}
[运行应用程序时,我通过在主线程上调用getInstance方法来创建此类的实例。但是,当我在同一进程中从单独的线程调用getInstance方法时,它将创建Single类的另一个实例。
我的代码每个进程不应该只有一个Single类的对象吗?如何更改为每个进程只有一个实例。
我正在做的是:private class ProfileBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.v(TAG, "onReceive :: " + action);
Handler handler = mHandlerMap.get(action);
if (handler != null) {
handler.onReceive(context, intent, device);
}
}
}
interface Handler {
void onReceive(Context context, Intent intent, BluetoothDevice device);
}
private void registerIntentReceiver(BroadcastReceiver receiver, IntentFilter filter) {
mContext.registerReceiver(receiver, filter, null, mReceiverHandler);
}
我正在用ProfileBroadcastReceiver方法注册registerIntentReceiver。我还传递了android.os.Handler对象,以便onReceive方法在单独的线程上运行。这是我调用getInstance()方法的地方:private class StateChangedHandler implements EventManager.Handler {
public void onReceive(Context context, Intent intent, BluetoothDevice device) {
..
Single single = Single.getInstance(context);
.
.
}
}