1. 程式人生 > >Android 開發小知識點收集(隨時更新)

Android 開發小知識點收集(隨時更新)

1、獲取手機執行時最大可佔用記憶體

int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
Log.d("TAG", "Max memory is " + maxMemory + "KB");

2、改變dialog 在不同視窗內顯示不同的大小

//在dialog.show()之後呼叫
public static void setDialogWindowAttr(Dialog dlg,Context ctx){
        Window window = dlg.getWindow();
        WindowManager.LayoutParams
lp = window.getAttributes(); lp.gravity = Gravity.CENTER; lp.width = LayoutParams.MATH_PARENT;//寬高可設定具體大小 lp.height = LayoutParams.MATH_PARENT; dlg.getWindow().setAttributes(lp); }

摘抄自:簡書——MrRock

3、監聽Activity是否顯示在使用者面前

@Override
public void onWindowFocusChanged
(boolean hasFocus) { // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus); }

當Activity展示咋使用者面前則 hasFocus 為 true;

4、成員變數與區域性變數的區別(簡寫:成、局)

1)、類中位置不同:成:類內 局: 方法內夥子方法上;
2)、記憶體中位置不同:成:棧記憶體 局:堆記憶體;
3)、生命週期不同:成:與物件共存亡 局:與方法共存亡;
4)、初始化值不同:成:有預設值 局:無預設值,必須賦值。

5、Java 獲取可變的 uuid

uuid 類似於時間戳 永遠不可重複。

  String uuid = UUID.randomUUID().toString().replaceAll("-", "");

6、Android 獲取 WiFi 的 ssid

1)、在 AndroidManifest.xml 檔案內新增許可權

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

2)、需要獲取的位置新增如下程式碼

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();

Logger.d("wifiInfo"+wifiInfo.toString());
Logger.d("SSID"+wifiInfo.getSSID());

3)、若不是想獲取當前連線,而是想獲取WIFI設定中的連線

WifiManager.getConfiguredNetworks()

4)、若獲取更多的資訊請檢視這位兄嘚的部落格:Android連續獲取當前所連線WiFi及周圍熱點列表資訊的解決方案 .

7、Android 開啟 WiFi 設定介面

1)、判斷手機是否連線wifi


        if (ConnectionDetector.getConnectionType(this) != ConnectionDetector.WIFI) {
             //跳轉wifi配置介面
            goToWifSetting();
        } else {
                //wifi已經連線
        }

程式碼如下:

Intent intent = new Intent();
if(android.os.Build.VERSION.SDK_INT >= 11){
    //Honeycomb
    intent .setClassName("com.android.settings", "com.android.settings.Settings$WifiSettingsActivity");
 }else{
    //other versions
     intent .setClassName("com.android.settings", "com.android.settings.wifi.WifiSettings");
 }
 startActivity(intent);

或者

  if (android.os.Build.VERSION.SDK_INT > 10) {
          // 3.0以上開啟設定介面,也可以直接用ACTION_WIRELESS_SETTINGS開啟到wifi介面
             startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
} else {
             startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
}

8、Android 8.0 獲取 wifi 的 ssid

之前用上面6的方法可以完美的獲取wifif裝置的 ssid 但是不能顯示 ssid 即使用者名稱

ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
assert manager != null;
NetworkInfo info = manager.getActiveNetworkInfo();
if (info != null && info.isConnected()) {
    String  wifiSsid = info.getExtraInfo().substring(1, info.getExtraInfo().length() - 1).trim();
}