public ?class ?ActivityManager {
? ? ? ? ? ? private? volatile? static? ActivityManager? mAManager;
? ? ? ? ? ? public ?static ?ActivityManager ?getActivity() {
? ? ? ? ? ? ? ? ? ? ? ?if(mAManager==null) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?synchronized(ActivityManager.class) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(mAManager==null) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mAManager=new ? ActivityManager();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ?returnmAManager;
? ? ? ? ? }
}
注:volatile關鍵字的作用是:線程每次使用到被volatile關鍵字修飾的變量時,都會去堆里拿最新的數據。換句話說,就是每次使用getActivity時,保證了getActivity是最新的。