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
'com.android.tools.build:gradle:3.0.0'
app buold.gtadle
flavorDimensions "default"
poject gradle.properties
android.enableAapt2=false
project build gradle
project build gradle
google()
2016年5月24日 星期二
Android Studio Speed Up
加入以下設定後
編譯速度由
我發現-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
org.gradle.jvmargs=-Xmx2048m
org.gradle.daemon=trueorg.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年10月23日 星期四
2014年9月25日 星期四
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
原本是想查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
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");
}
}
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();
}
}
2014年5月7日 星期三
2013年6月4日 星期二
在Android中sqlite join資料表時使用getColumnIndex錯誤
在select時使用table.a As bbb 為欄位命名的這種方法,在getColumnIndex就用命名後的欄位名稱,這樣就不會錯誤囉...詳以下網址
http://stackoverflow.com/questions/14576100/android-how-to-access-results-from-cursor-when-inner-join-is-performed
http://stackoverflow.com/questions/14576100/android-how-to-access-results-from-cursor-when-inner-join-is-performed
2013年5月8日 星期三
Activity切換及返回時的動畫
如果再每個頁面都去定義intent時要用哪種動畫真的很麻煩,還不如直接定義在application中,這要整個App都有動畫囉~
詳細的解說可以到這個頁面
http://stackoverflow.com/questions/2625812/start-activity-with-an-animation
詳細的解說可以到這個頁面
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上一直出現以下錯誤
這是在做一個項目的時候遇到的問題:在第一界面的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"後似乎就不會有這個問題了
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這一句,分享給同行們
使用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這一句,分享給同行們
訂閱:
文章 (Atom)
星期、月份英文縮寫
中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...
-
中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...
-
要把經緯度店址可以使用以下作法 Geocoder gc = new Geocoder(getActivity(), Locale.TRADITIONAL_CHINESE); List<Address> lstAddress = gc.getFromLocation...
-
買車、買房、投資、貸款 算一下未來價值,未來負債,使用"圖表"方便看 每個人都該對錢的利息和利率有概念的必裝軟體! 讓你簡單換算利率,利息,並顯示圖表查看 買車、買房、投資、貸款 單利率、複利率、...