發表文章

目前顯示的是 11月, 2018的文章

Matlab從指定檔案讀取URL並下載

Activity啟動模式(Launch Mode)

從 這篇 的簡短解說可以快速了解啟動模式 Activity有四種啟動模式,它們是: standard 標準模式,每次都新建一個實例對象 singleTop 如果在任務棧頂發現了相同的實例則重用,否則新建並壓入棧頂 singleTask 如果在任務棧中發現了相同的實例,將其上面的任務終止並移除,重用該實例。否則新建實例併入棧 singleInstance 允許不同應用,進程線程等共用一個實例,無論從何應用調用該實例都重用 只要在AndroidManifest.xml對activity 增加android:launchMode屬性即可指定 android:launchMode="singleInstance" Android Developer文件也有解說 https://developer.android.com/guide/components/tasks-and-back-stack?hl=zh-tw 要觀察Task可以在adb shell輸入下面的指令 dumpsys activity activities launchMode寫在Manifest裡面是指若呼叫者沒有加FLAG時的預設行為, 要改變這個預設結果只要在intent中setFlag就可以改變了 FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_SINGLE_TOP 這裡看到一個有趣的參數FLAG_ACTIVITY_NO_ANIMATION, 可以免除切換APP的動畫 如果發現intent都是null, 可能是onNewIntent需要Override一下 @Override protected void onNewIntent(Intent intent) {     super.onNewIntent(intent);     setIntent(intent); } http://stackoverflow.com/questions/6352281/getintent-extras-always-null http://fanli7.net/a/bianchengyuyan/C__/20130619/372727.html

python轉換IP/Port成Inet和mac數值轉換

判斷 endian https://stackoverflow.com/questions/1346034/ import sys sys.byteorder 'little' IP/Port和INET之間的轉換 http://blog.csdn.net/fan_hai_ping/article/details/8435140  socket.inet_aton("192.168.1.1") '\xc0\xa8\x01\x01'  addr = socket.inet_aton("192.168.1.1")  type(addr) import socket  addr = socket.inet_aton('127.0.0.1')  addr '\x7f\x00\x00\x01' >>> socket.inet_ntoa(addr) '127.0.0.1' 轉換port socket.htons(0x1234) 13330 socket.ntohs(0x1234) 13330  socket.ntohs(1234) 53764  socket.htons(1234) 53764 取得目前host ip https://www.pythonsheets.com/notes/python-socket.html  import socket  socket.gethostname() 'MacBookPro-4380.local'  hostname = socket.gethostname()  socket.gethostbyname(hostname) '172.20.10.4'  socket.gethostbyname('localhost') '127.0.0.1' MAC數值轉換 import binascii  mac = '00:11:32:3c:c3:0b'  byte = binascii.unhexlify(mac.rep

Android ndc cmd note

ndc是android的NativeDaemonConnector提供framework與底層溝通, 在每一個版本中支援的指令不近相同, 像是 這裡 有彙整ndc resolver的指令, 另外在 這篇 有畫大致的架構圖 舉例來說ConnectivityManager在設定網路的時候會呼叫NetworkManagementService https://android.googlesource.com/platform/frameworks/base.git/+/android-4.2.2_r1/services/java/com/android/server/ConnectivityService.java public ConnectivityService(Context context, INetworkManagementService netManager ,   mNetd = checkNotNull( netManager , "missing INetworkManagementService");         if (changed) {             try {                 mNetd .setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses));                 mNetd .setDefaultInterfaceForDns(iface);             } catch (Exception e) {                 if (DBG) loge("exception setting default dns interface: " + e);             }         } 而NetworkManagementService再透過ndc調整網路設定         mConnector = new NativeDaemonConnector(                 new NetdCallbackReceiver(), "netd", 10, NETD_TAG, 16