五月工作总结

一、            总结

一.          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时会调用,经过手工测试,暂时未发现问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值