跳到主要內容

發表文章

目前顯示的是 七月, 2016的文章

Mac版 Java 7 取得檔案 MIME type 的方式

現行 Java 取得檔案 MIME type的標準方式是透過 Files.probeContentType(Path path) 取得 最近處理同事回報的問題才發現這個方式在Mac版的 Java 7 有bug 官方錯誤列表:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7133484 而且應該只會修正Java 8以後的版本
目前測試改用 URLConnection.guessContentTypeFromName(String fileNmae) 也是一種可行的方式 如果MIME type相關的程式有可能部署在 Mac環境的 Java 7的話,需要注意這個問題

Java Nashorn Engine 的 setTimeout 使用方式

之前想透過 Java 的 Nashron 執行 setTimeout 這個定時執行的 JavaScript 函式碰到問題
看起來 Nashorn 並沒有實作關於非同步的 JavaScript 機制
我並沒有花太多時間查閱相關規格,只能猜想也許他鼓勵設計者使用 Java 的 async 機制

不過有時候需要執行的JavaScript Code 沒辦法排除 setTimeout 而改寫成 Java code
查到的相容寫法如下:

var setTimeout, clearTimeout, setInterval, clearInterval;

(function () {
    var timer = new java.util.Timer();
    var counter = 1;
    var ids = {};

    setTimeout = function (fn,delay) {
        var id = counter++;
        ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn});
        timer.schedule(ids[id],delay);
        return id;
    }

    clearTimeout = function (id) {
        ids[id].cancel();
        timer.purge();
        delete ids[id];
    }

    setInterval = function (fn,delay) {
        var id = counter++;
        ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn});
        timer.schedule(ids[id],delay,delay);
        return id;
    }

    clearInterval = clearTimeout;

    setTimeout(function(){ [your function code] }, [delay]);

})()

用上述方式就可以繼續執行 setTi…

從 Android device 取得App crash log

參考資料: https://wiki.cyanogenmod.org/w/Doc:_debugging_with_logcat

Android developer 大概都會有協助測試 app 執行狀況的需求
不過如果不是用 Android Studio build 的話,crash report 只能從 device本身拿出來才看的到

以 Windows 為例的取得方式如下:

1.Win+R 叫出執行後,輸入 cmd 啟用命令提示字元

2.切換到 Android SDK 底下的 platform-tools 目錄
C:\Users\vencil>D:
D:\SubPrograms\AndroidSDK\tools>cd D:\SubPrograms\AndroidSDK\platform-tools

3. 下指令 adb logcat *:E > [destination] 就可以將log輸出到目的檔案裡了
D:\SubPrograms\AndroidSDK\platform-tools>adb logcat *:E > D:\errlog.log


如果想在不移除app的狀況下清除累積的log,可以用 logcat  指令帶 -c flag
D:\SubPrograms\AndroidSDK\platform-tools>adb logcat -c