比赛训练笔记 - Android

屏幕旋转

检测屏幕方向:

int orientation = getResources().getConfiguration().orientation;
boolean landscape = (orientation == Configuration.ORIENTATION_LANDSCAPE);

强制Activity横屏

AndroidManifest里给Activity标签添加属性:

android:screenOrientation="landscape"

切换时自动重建

创建layout时在Qualifier列表中添加Orientation属性。调用R.layout.xxx时会自动根据屏幕方向选择对应的layout。

【C#】volatile 和内存屏障

原文:https://learn.microsoft.com/en-us/archive/msdn-magazine/2012/december/csharp-the-csharp-memory-model-in-theory-and-practice

半内存屏障

例如有这样的程序,Init()Print()在不同的线程上执行。

int data = 0;
bool inited = false; // 指示data字段是否已经设置的标志

void Init(){
    data = 42;
    inited = true; // 设置标志,指示data字段已经设置好了
}
void Print(){
    // 如果有inited的标志,打印data字段的值
    // 否则打印 Not initialized!
    if(inited){
        Console.WriteLine(data);
    }else{
        Console.WriteLine("Not initialized!");
    }
}