五月工作總結

一、            總結

一.          linux命令

1.  查看剩餘空間自己的服務器2012-05-28

   quota -sp

        

2.  查看文件夾所佔空間大小2012-05-28

du

會深度遍歷該目錄,羅列出所有文件大小,加上option選項--max-depth指定深入的文件夾層級,如下。

1.  Camera在跑monkeytest時出現連接相機故障問題 2012-05-11
分析:

         屬於ANR問題。在mediaserver控制camera設備時,其他應用想要連接camera設備進行處理,卻因爲mediaserver還未釋放對camera設備的控制權,導致連接失敗。例如,在錄製視頻時,mediarecord控制camera設備,這時,又要播放錄製視頻開始結束聲音,sound試圖連接camera設備,就導致連接失敗。

         如下,seekTo調用後,一直在等待它返回結果,但是一直沒等到。

 

2.  獲取手機上指定的activity 2012-05-11

//首先設定intentFilter

            final Intentintent = new Intent();

            if (mimeType ==null)

                mimeType ="image/jpeg";

            if(mimeType.contains("text")) {

                // We need toshare this as a text string.

                intent.setAction(Intent.ACTION_SEND);

               intent.setType(mimeType);

 

                // Create anewline-separated list of URLs.

                StringBuilderbuilder = new StringBuilder();

                for (int i =0, size = uris.size(); i < size; ++i) {

                   builder.append(uris.get(i));

                    if (i !=size - 1) {

                       builder.append('\n');

                    }

                }

               intent.putExtra(Intent.EXTRA_TEXT, builder.toString());

            } else {

                if(uris.size() == 1) {

                   intent.setAction(Intent.ACTION_SEND);

                   intent.putExtra(Intent.EXTRA_STREAM, uris.get(0));

                } else {

                   intent.setAction(Intent.ACTION_SEND_MULTIPLE);

                   intent.putExtra(Intent.EXTRA_STREAM, uris);

                }

                 intent.setType(mimeType);

            }

           intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

//然後通過mContext獲得PackageManager

            // Query thesystem for matching activities.

            PackageManagerpackageManager = mContext.getPackageManager();

//最後通過PackageManager.queryIntentActivities(),傳入intent獲取。

           List<ResolveInfo> activities = packageManager.queryIntentActivities(intent,0);

 

3.  Contentprovider中的URI2012-05-15

 

什麼是URI?

將其分爲A,B,C,D 4個部分:

A:標準前綴,用來說明一個Content Provider控制這些數據,無法改變的;"content://"

B:URI的標識,它定義了是哪個Content Provider提供這些數據。對於第三方應用程序,爲了保證URI標識的唯一性,它必須是一個完整的、小寫的 類名。這個標識在 元素的 authorities屬性中說明:一般是定義該ContentProvider的包.類的名稱;"content://hx.android.text.myprovider"

C:路徑,不知道是不是路徑,通俗的講就是你要操作的數據庫中表的名字,或者你也可以自己定義,記得在使用的時候保持一致就ok了;"content://hx.android.text.myprovider/tablename"

D:如果URI中包含表示需要獲取的記錄的ID;則就返回該id對應的數據,如果沒有ID,就表示返回全部;"content://hx.android.text.myprovider/tablename/#" #表示數據id

1.  APR問題_20120522_gallery2012-05-22

1>

ARGONS_4_0B.18.13RDS

null

358541040000359.00

SYSTEM_APP_CRASH

2012-5-21 15:57

http://192.168.1.202:8080//apr\\sysadm\\projecslog\\8901\\2012-05-21 03-56-5275\\1.zip

com.cooliris.media

 

java.lang.NullPointerException

         atcom.cooliris.media.ReverseGeocoder.computeMostGranularCommonLocation(ReverseGeocoder.java:154)

         atcom.cooliris.media.ReverseGeocoder.process(ReverseGeocoder.java:114)

         atcom.cooliris.media.ReverseGeocoder.run(ReverseGeocoder.java:92)

 

 對應代碼:

String currentCountry= Locale.getDefault().getCountry();

 

分析:

         因爲Locale.getDefault()是個靜態函數,因此懷疑是Locale.getDefault()返回的值是個null指針,導致空指針異常。

 

2>

ARGONS_4_0B.18.13RDS

null

358541040000359.00

SYSTEM_APP_CRASH

2012-5-21 17:34

http://192.168.1.202:8080//apr\\sysadm\\projecslog\\8901\\2012-05-21 05-45-4792\\5.zip

com.android.camera

 

java.lang.RuntimeException: WakeLock under-lockedcom.android.camera.Camera

         at android.os.PowerManager$WakeLock.release(PowerManager.java:316)

         atandroid.os.PowerManager$WakeLock.release(PowerManager.java:291)

         atandroid.os.PowerManager$WakeLock$1.run(PowerManager.java:210)

         atandroid.os.Handler.handleCallback(Handler.java:587)

         atandroid.os.Handler.dispatchMessage(Handler.java:92)

         atandroid.os.Looper.loop(Looper.java:179)

         atandroid.app.ActivityThread.main(ActivityThread.java:3689)

         atjava.lang.reflect.Method.invokeNative(Native Method)

         atjava.lang.reflect.Method.invoke(Method.java:507)

         atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:875)

         atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:633)

         atdalvik.system.NativeStart.main(Native Method)

 

分析:

         暫時不能分析出問題出來,猜測是跟WakeLock加解鎖有關,可能是死鎖問題。

 

2.  SD卡讀寫數據問題 2012-05-25

 

對比一下四張SD卡讀寫輸入數據如下:

1.四張卡,SD卡1(2G、金士頓)、SD卡2(256M,未知)、SD卡3(2G、未知)、SD卡4(8G、未知,測試組復現問題的卡),用兩款android測試SD卡速度軟件在argonspin和domoni Q  手機上分別測試5次,結果如下:

SD卡1; argonspin 6.2M 27.7M     5.5M28.8M    5.5M 27.7M   5.5M 28.3M   5.0M 29.3M  平均速度 寫:5.54M  讀:28.36M

                               2.0M  9.0M     2.0M 10.0M    3.0M10.0M   2.0M 10.0M    3.0M  9.0M   平均速度 寫:2.4M  讀:9.6M

SD卡1; domoni Q  7.3M 17.2M     7.2M17.2M    7.2M 17.3M   6.4M 17.3M    7.6M17.3M  平均速度 寫:7.14M  讀:17.26M

                               2.0M 13.0M     2.0M 11.0M    2.0M11.0M   3.0M 12.0M    2.0M 12.0M  平均速度 寫:2.2M  讀:11.8M

                              

SD卡2; argonspin 4.6M 13.9M     4.7M13.9M    4.8M 14.0M   4.8M 13.8M   4.6M 14.3M  平均速度 寫:4.7M  讀:13.98M

                                (SD卡容量太小,第二款軟件無法測試讀寫速度)

SD卡2; domoni Q  4.5M  9.7M     4.4M11.2M    4.3M 11.3M   4.5M 11.2M   4.7M 11.2M  平均速度 寫:4.48M  讀:10.93M

                              (SD卡容量太小,第二款軟件無法測試讀寫速度)

SD卡3;argonspin5.1M 31.5M     5.3M 32.1M    5.5M34.0M   5.6M 33.0M    5.6M 33.7M  平均速度 寫:5.42M  讀:32.86M

                              8.0M 15.0M     9.0M 15.0M    8.0M 13.0M  7.0M 15.0M    8.0M 15.0M  平均速度 寫:8.0M 讀:14.6M

SD卡3;domoniQ  5.1M 16.6M     4.9M 18.1M    5.1M18.6M   5.0M 18.6M    5.1M 19.1M  平均速度 寫:5.04M  讀:18.2M

                              6.0M 12.0M     6.0M 14.0M    6.0M 14.0M  6.0M 13.0M    6.0M 14.0M  平均速度 寫:6.0M 讀:13.4M

 

SD卡4; argonspin 5.9M 33.4M     5.8M38.0M    5.9M 35.0M   5.9M 35.6M   5.8M 34.5M  平均速度 寫:5.85M  讀:35.3M

                               7.0M 15.0M     7.0M 15.0M    7.0M14.0M   6.0M 15.0M    6.0M 14.0M  平均速度 寫:6.6M  讀:14.6M

SD卡4; domoni Q  5.5M 18.1M     5.3M18.7M    5.4M 18.5M   5.5M 18.6M   5.4M 18.6M  平均速度 寫:5.42M  讀:18.5M

                               6.0M 16.0M     6.0M 16.0M    6.0M15.0M   6.0M 16.0M    6.0M 16.0M平均速度 寫:6.0M  讀:15.8M

 

以上數據在不同手機不同軟件數據不同只作參考。

 

2.用四張卡在camera拍照,LOG打印出保存文件的所花時間的數據如下

SD卡1: 90ms 38ms  90ms  22ms  20ms  72ms  21ms 38ms26ms  24ms 110ms  36ms 102ms 29ms 37ms 85ms 28ms 26ms 221ms

36ms  22ms 22ms 78ms 39ms 84ms 20ms20ms 13ms 16ms 21ms 18ms  82ms 19ms 23ms 18ms 14ms 176ms 31ms 16ms 22ms77ms

這張卡保存文件時間比較穩定,基本保持在100ms以內。從拍照到返回預覽界面的時間大致相同,偏差不大。

 

SD卡2: 87ms 147ms 102ms 147ms 106ms 145ms 143ms 103ms 99ms 144ms 144ms 265ms 154ms321ms 175ms 120ms 162ms  132ms

178ms 146ms 145ms 111ms 129ms 134ms 135ms159ms 171ms 123ms 259ms 157ms 158ms 124ms 130ms 126ms 150ms 133ms 100ms 107ms

這張卡保存文件時間也比較穩定,基本保持在200ms以內。從拍照到返回預覽界面的時間大致相同,偏差不大。

 

SD卡3: 572ms 54ms  55ms 274ms 48ms 44ms 287ms 55ms 47ms 59ms 26ms 16ms 23ms 49ms53ms 58ms  542ms 56ms 63ms 26ms

37ms 17ms  568ms  50ms  32ms16ms 580ms  55ms  22ms  583ms 571ms 58ms 297ms 194ms 317ms 44ms561ms 46ms 43ms

這張卡保存文件時間偏差較大,從580ms到17ms。從拍照到返回預覽界面的時間會有偏差。

 

SD卡4: 832ms  651ms  1330ms  221ms  926ms 266ms  394ms1243ms  1107ms 786ms 576ms 1154ms  358ms 757ms 755ms 456ms

407ms 502ms 571ms 432ms  331ms 668ms77ms 432ms  459ms  263ms 857ms  618ms  1038ms 466ms323ms  438ms  752ms  459ms

282ms  304ms  289ms 833ms 323ms 172ms 221ms 156ms 273ms 466ms 385ms 453ms 247ms 508ms 449ms 148ms 117ms 174ms 109ms:

這張卡是測試組復現的卡,保存文件時間偏差更大,從1330ms  到77ms,基本要花費500ms的時間。從拍照到返回預覽界面的時間偏差較大。

 

3.測試用SD卡1和測試組的SD卡4,在argonspin手機文件管理器中拷貝文件從一個目錄到另一個目錄,顯示SD卡1速度要比SD卡4的速度快。結果跟拍照存儲照片現象一致。

 

4.用測試組的SD卡4在domoni Q  中拍照偶有變慢的情況,但延遲都不是很大。

 

 

分析:

         1)

         拍攝一張照片後,對於數據庫的操作,會是新增一條該圖片的記錄,該記錄是保存在手機內存的,而非SD卡。因此該數據庫操作的時間快慢與SD卡的讀寫速度無關係。

         同時,存放在SD卡上的縮略圖並不會生成,存放在SD卡上的filecache並不會更新,它們都是在進入gallery3D才進行操作的。

         2)

         在本人SD卡上,測試了一組(大概20張)拍攝一張照片後數據庫新增一條記錄所需時間的數據,發現時間基本穩定在22ms。建議在SD卡4上也測試下這組數據,不過鑑於此操作是對手機內存進行的,因此覺得在出問題的SD卡4上,時間大體如此。

         3)               

測試了另一組數據,就是存放新拍攝的圖片文件所需時間。

 

               對於本人的SD卡,該時間基本上穩定在100ms左右。

               對於SD卡3,該時間基本上平均在400ms左右,且不穩定,最長可達到1000ms,最短可達70ms。

 

               因此,懷疑與SD卡有關。

3.  APR問題_20120529_gallery2012-05-29

 

對於“gallery3DCrash.txt”這個,出現以下異常。

               java.lang.IllegalThreadStateException: Thread already started.

               對應代碼如下:(mediafeed.java)

                       if (mDataSourceThread != null&& !mDataSourceThread.isAlive()){

                           mDataSourceThread.start();

                       }

               其實在執行start前已經有做判斷該線程是否已經start了,但是還是出現這個異常,本人懷疑是存在異步調用,導致兩個線程同時執行完isAlive,然後線程A搶先執行了start,輪到線程B執行時就報這個異常。而具體在什麼時候會出現這種兩個線程都執行到這的情況,這個還比較難排查。

 

               解決方案是加上同步塊,如下

               synchronized(objectLocker){          

                       if (mDataSourceThread != null&& !mDataSourceThread.isAlive()) {

                          mDataSourceThread.start();

                       }

               }

               該代碼塊主要在每次進入gallery3D時會調用,經過手工測試,暫時未發現問題。

發佈了61 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章