2018年11月28日 星期三

星期、月份英文縮寫

中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU Tu T T Tues 星期三 Wednesday WED Wed WE We W W 星期四 Thursday THU Thu TH Th T R Thur / Thurs 星期五 Friday FRI Fri FR Fr F F 星期六 Saturday SAT Sat SA Sa S S 中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 其他 縮寫 一月 January JAN Jan Ja J 二月 February FEB Feb Fe F 三月 March MAR Mar Mr Mh Ma M 四月 April APR Apr Ap Al A 五月 May MAY May My Ma M 六月 June JUN Jun Jn Je Ju J 七月 July JUL Jul Jl Jy Ju J 八月 August AUG Aug Au Ag A 九月 September SEP Sep Se S Sept 十月 October OCT Oct Oc O 十一月 November NOV Nov No Nv N 十二月 December DEC Dec De D

2017年12月29日 星期五

Android java 循環播放的技巧

如果你想讓某樣東西一直循環播放,經常使用的是for迴圈來循環一個陣列的東西,當迴圈到達迴圈對大長度時,要自己控制index是0,這樣才能循環播放,有個比較技巧的作法可以使用java的mod,以下程式碼

    public final static String[] polyLineColor={"#0","#1","#2","#3","#4","#5","#6"};
public static void main(String[] args) {

for(int i = 0 ; i < 20 ; i++) {
int aa =  i % polyLineColor.length;
System.out.println(polyLineColor[aa]);
}


}

這樣可以有以下顯示的結果
#0
#1
#2
#3
#4
#5
#6
#0
#1
#2
#3
#4
#5
#6
#0
#1
#2
#3
#4
#5




2017年12月17日 星期日

Android ANR和Crash问题小结--分析log

Android ANR和Crash问题小结--分析log

在手机项目中,ANR和Crash都是比较常见的一类问题,解决起来非常耗费时间,但是又不能放弃,这些问题影响产品性能,这里记录一下我是如何分析ANR和Crash的。
一般遇到ANR或者Crash问题,到工程师手上时,基本上就是只有一个操作流程描述(友情提醒:这个操作流程未必描述的准确和详实)和一个log文件夹,要求解决或者给出一个说明(基本上就是跟芯片商的CE来回撕逼,给一个与自己无关的说明)

ANR问题:
1.log文件夹下全局搜am_anr,此时会把log文件下下所有的包含am_anr的行显示出来(也可以搜activitymanager: ANR)
2.一般同一个时间点的anr log会在不同的文件中出现两次,一次是logxxx.txt中,一次是在crash_xxxxxx文件夹中的aplog_ANR_时间文件中
3,进入到crash_xxxxxx文件夹下,找到一个data_app_anr@xxx.txt文件
4,在data_app_anr@xxx.txt文件中找到"main" prio=5 tid=1 Nativ这一行,往下看会有一些异常log,这些log描述的就是问题原因

ANR如果是由于主线程阻塞,在data_app_anr@xxx.txt中的"main" prio=5 tid=1 中会显示 block

在处理ANR问题时,找到在log文件中找到ANR log出现的节点,然后要往上看一部分,因为有些log是自动化测试在模拟点击事件,反复点击或者进入一个应用,往上看一部分log有助于分析在ANR之前手机有哪些操作。

Crash问题:
1.log文件夹下全局搜am_anr,此时会把log文件下下所有的包含am_crash的行显示出来
2.crash问题很好看,基本上就代码写的有问题,针对出现的问题修改一下就好

友情提醒
分析log时往往要全局或者是整个文件下搜索,找一个自己用的顺手的文本编辑器很重要,本人使用的是sublime,它可以导入整个文件夹,搜索起来很方便



轉自
http://blog.csdn.net/dzy_mails/article/details/51917454

2017年11月12日 星期日

android studio 3.0

build gradle
'com.android.tools.build:gradle:3.0.0'

app buold.gtadle
flavorDimensions "default"

poject gradle.properties
android.enableAapt2=false

project build gradle
google()


2016年5月24日 星期二

Android Studio Speed Up

加入以下設定後
org.gradle.jvmargs=-Xmx2048m
org.gradle.daemon=true
org.gradle.parallel=true


編譯速度由
rebuild:Total time: 1 mins 3.007 secs
執行APP:Total time: 5 mins 36.478 secs

降低為
rebuild:Total time: 32.134 secs
執行APP:Total time: 1 mins 1.383 secs


我發現-Xmx2048m並不是越高越好,像我調整為3072速度並沒有2048來得快,不知道為什麼。


參考資料
https://plus.google.com/+AndroidDevelopers/posts/bASZVRvdXnT
https://www.timroes.de/2013/09/12/speed-up-gradle/
http://alphayang.community/2015/10/16/speed-up-android-studio-build/
http://www.viralandroid.com/2015/08/how-to-make-android-studio-fast.html

2014年11月24日 星期一

利息計算小幫手-利率、基金、貸款、投資、年金、房貸



買車、買房、投資、貸款
算一下未來價值,未來負債,使用"圖表"方便看
每個人都該對錢的利息和利率有概念的必裝軟體!




讓你簡單換算利率,利息,並顯示圖表查看

買車、買房、投資、貸款


單利率、複利率、年金、定期定額、房貸利率試算、車貸利率試算、所有貸款



2014年9月24日 星期三

Application的生命週期

以前一直好奇,Activity有onStart,onResume,onPause,onStop之類的,但extand Application怎麼沒有,原來可以實作ActivityLifecycleCallbacks

原本是想查activity的目前是不是在背景狀態偶然看到的
http://stackoverflow.com/questions/3667022/checking-if-an-android-application-is-running-in-the-background/5862048#5862048

2014年7月2日 星期三

偵測service是否正在執行

private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (serviceClass.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}

2014年5月14日 星期三

RadioGroup裡的radiobutton setcheck時沒有反應

重新刷新radioGroup時除了

deviceRadioGroup.removeAllViews();
還要
deviceRadioGroup.clearCheck();

看到網頁後才了解,困擾了好幾天
http://stackoverflow.com/questions/4035465/android-radiobutton-not-able-to-set-using-setcheckedfalse-method

2014年5月10日 星期六

Sqlite在多執行緒

可參考
http://stackoverflow.com/questions/5786206/to-to-implement-a-sqlite-manager-for-thread-safe-read-write-access

2014年5月8日 星期四

Fragment與Activity溝通

在官方的範例中有以下做法
http://developer.android.com/training/basics/fragments/communicating.html

//左側Fragment
public class MainLeftFragment extends Fragment {

 private OnFragmentInteractionListener mListener;

//點擊事件後如果要傳的值就使用
 mListener.onFragmentInteraction("*");


    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }


    public interface OnFragmentInteractionListener {
        public void onFragmentInteraction(String uri);
    }

}


//MainActivity
public class MainActivity extends BaseFragmentActivity implements  MainLeftFragment.OnFragmentInteractionListener{


//將要發生的事件寫在這
    @Override
    public void onFragmentInteraction(String uri) {
        Toast.makeText(this,uri,Toast.LENGTH_SHORT).show();
    }


}

在Android Activity中捕獲Application Crash

可以使用Thread.setDefaultUncaughtExceptionHandler()詳至google搜尋此關鍵字

2014年5月7日 星期三

java解析html結點

可以使用Jsoup來簡單解析,網址為
http://jsoup.org/cookbook/modifying-data/set-html

先記錄起來如果以後需要用到~

2013年5月8日 星期三

Activity切換及返回時的動畫

如果再每個頁面都去定義intent時要用哪種動畫真的很麻煩,還不如直接定義在application中,這要整個App都有動畫囉~

詳細的解說可以到這個頁面
http://stackoverflow.com/questions/2625812/start-activity-with-an-animation

2013年3月21日 星期四

Intent.putExtra一個Class

有一個class,裡面都是get與set方法,我想把他putExtra到另外一個Activity.
方法就是在那個class 後面加上implements Serializable就可以使用putExtra這個class了

例如:public class Car implements Serializable {...}



2013年3月12日 星期二

解決Activity has leaked window … that was originally addedㄐ

今天Note Tab 10.1上一直出現以下錯誤


05-05 10:36:41.009: E/WindowManager(4243): Activity com.tao.MyActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405241b0 that was originally added here
05-05 10:36:41.009: E/WindowManager(4243): android.view.WindowLeaked: Activity com.tao.MyActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@405241b0 that was originally added here
05-05 10:36:41.009: E/WindowManager(4243):     at android.view.ViewRoot.(ViewRoot.java:265)
05-05 10:36:41.009: E/WindowManager(4243):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
05-05 10:36:41.009: E/WindowManager(4243):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-05 10:36:41.009: E/WindowManager(4243):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.Dialog.show(Dialog.java:241)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ProgressDialog.show(ProgressDialog.java:107)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ProgressDialog.show(ProgressDialog.java:95)
05-05 10:36:41.009: E/WindowManager(4243):     at com.unifable.activity.MySecretaryActivity.onCreate(MySecretaryActivity.java:50)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-05 10:36:41.009: E/WindowManager(4243):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-05 10:36:41.009: E/WindowManager(4243):     at android.os.Looper.loop(Looper.java:130)
05-05 10:36:41.009: E/WindowManager(4243):     at android.app.ActivityThread.main(ActivityThread.java:3683)
05-05 10:36:41.009: E/WindowManager(4243):     at java.lang.reflect.Method.invokeNative(Native Method)
05-05 10:36:41.009: E/WindowManager(4243):     at java.lang.reflect.Method.invoke(Method.java:507)
05-05 10:36:41.009: E/WindowManager(4243):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:906)
05-05 10:36:41.009: E/WindowManager(4243):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:664)
05-05 10:36:41.009: E/WindowManager(4243):     at dalvik.system.NativeStart.main(Native Method)




這是在做一個項目的時候遇到的問題:在第一界面的Activity中,為了避免程序假死帶來的糟糕的用戶體驗,採用非同步任務AsyncTask來訪問網絡,與服務器進行交互,並用
ProgressDialog控件來告知用戶當前的程序進度。

在網上查了下別人的資料。才終於明白了原因。
上面的異常的意思是:存在窗口句柄的洩漏,即未能及時的銷毀某個PhoneWindow.

為什麼會出現這樣的情況,因為,在非同步任務裡面已經發生了嚴重的錯誤,而導致Activity的強制關閉。Activity強制關閉了,可是ProgressDialog並沒有dismiss()掉,所以出現了
窗口句柄的洩漏。 而且,更嚴重的是,這個異常會覆蓋我們在AsyncTask裡面發生的真正異常,這往往會誤導我們,把過多的精力放在查找所謂的內存洩漏的上面,而不是查找AsyncTask
中出現的錯誤。

參照別人的解決方法:
本解決方法並不能真正的解決問題,但是在一定程度上可以將真正導致錯誤的異常信息顯露出來。即重寫Activity的onDestory()方法,在該方法中調用dismiss()來解除對ProgressDialog
的引用。

再加上當離開Activity後離開AsyncTask執行
if(!AsyncTask.isCancelled()){
AsyncTask.cancel(true);
}

我的應用程式是在onCreate時都會使用
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);   //保持螢幕橫式
來保持螢幕橫式,但我發現在3.2版本的設備上或某些設備都還是會先轉直式再轉橫式,造成2次onCreate,所以我改成直接在AndroidManifest.xml的每個Activity加上android:screenOrientation="landscape"後似乎就不會有這個問題了

2013年3月6日 星期三

ubuntu下使用 eclipse 開發 android 時抓不到htc手機

今天接上HTC Incredible S開發時裝置抓不到,照了這位大大的文章後還是抓不到(http://wangjenmin.blogspot.tw/2011/07/ubuntu-eclipse-android-htc.html)

使用sudo ./adb devices使令察看顯示no permissions,後來照了這篇文章後解決了(http://stackoverflow.com/questions/9210152/set-up-device-for-development-no-permissions)

主要是sudo chown root. /etc/udev/rules.d/51-android.rules這一句,分享給同行們

星期、月份英文縮寫

中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...