Eclipse修改log缓冲大小
大家有木有这种情况,看着已经定位的错误log,一行一行的消失。。我的心也跟着崩溃了。
这是因为默认Log的缓存只有5000条
我们需要在Window-Preferences-Android-logcat…把5000加个0
大家有木有这种情况,看着已经定位的错误log,一行一行的消失。。我的心也跟着崩溃了。
这是因为默认Log的缓存只有5000条
我们需要在Window-Preferences-Android-logcat…把5000加个0
目录没在同一个
在用到ImageView设置背景选择器的时候,要用. setImageResource ()。(对应布局的src属性),这样图片有多大就显示多大,用background将会拉伸图片适应宽高。ImageButton和此一样的用法。
有时需要列表平滑滚动到指定位置
但和预期位置有出入
网上查的原因说是Android的一个bug
解决方法如下
ListView.smoothScrollToPosition(0)
ListView.postDelayed(new runnable){
ListView.setSelection(0)
}
一个很微妙的bug
ListView的getItemViewType (int pos)
返回一定从0开始
切记
纠结了好久,设置ListView背景后,每次点击都感觉文字有层透明的图片遮住了,那是因为adapter中的布局文字未设置颜色,系统默认的就会出现透明的感觉。
另附加上跑马灯
然后在Adapter找到对应的TextView, setSelected(true)
跑马灯走你
1.listview xml里面加上
android.transcriptmode=alwaysScroll
android:stackFromBottom="true"//此种情况 每次数据更新状态都会滚到最后一条
到顶部
```
if (!listview.isStackFromBottom()) {
listview.setStackFromBottom(true);
}
listview.setStackFromBottom(false);
```
到底部
if (listview.isStackFromBottom()) {
listview.setStackFromBottom(false);
}
listview.setStackFromBottom(true);
2.list.post(new runnable)
List.setselection(size-1)
可以在需要滚的地方滚
项目的清单文件和库里面或者arr里面的清单文件有重复项并且不一致,替换为一致即可。比如我遇到的情况是meta data不一致
以前做炒股app,测试都是测试部工作,现在新的公司一来就说先跑一跑monkey吧。Monkey?不是猴子麽,怎么跑?
经过多次摸索后,终于可以笑嘻嘻的跑monkey了
首先adb shell
mkdir /mnt/sdcard/monkey 回车 创建一个文件夹专门存放Monkey跑完后收集的错误信息
monkey -p 包名 --ignore-crashes --ignore-timeouts --ignore-native-crashes --pct-touch 50 -s 1 -v -v --throttle 300 10000 2>>/mnt/sdcard/monkey/error.txt 1>>/mnt/sdcard/monkey/info.txt 回车
然后就看到我们的应用飞起来了。。不要
亚美爹~
不要~
停~
然后可以在d盘 执行adb pull /mnt/sdcard/monkey .
就看到error.tex文件 好,开始分析程序中bug吧。Note:在跑完一遍monkey修改bug后,我们要先删除以前的error.txt文件,否则文本还是叠加了刚才的错误。
删除的命令是(进入到删除文件的根目录)rm -r xx
被设计为不和用户直接交互,在后台执行长期操作的一种系统组件,也可被其它应用使用。每一个服务必须在AndroidManifest中声明。服务可以通过Context.startService() and Context.bindService().启动。Note:service运行在主线程,因此执行网络操作需要另起线程,但IntentService可以解决这个问题。
首先,我们来说说服务不是什么:
1:服务不是一个单独的进程,通常情况下它运行在应用进程的一部分
2.服务不是线程,它不能在应用无响应时工作
下面来说说服务两个主要的特征:
1.很方便的通知系统,我有一些后台任务需要处理,直到明确停止服务
2.很方便的给其它应用提供功能
Note:因为服务很简单,所以我们可以以任何我们想交互的方式来设计一个服务。我们可以将服务看成一个可以随时调用它方法的普通的Java对象,通过AIDL来交互。
服务可以通过两种方式启动。如果有人调用了Context.startService(),那么服务的oncreate()和onStartCommand(Intent, int, int)会被回调,不管执行多少次startService,服务都不会重新创建,而会多次调用onStartCommand,所以并不存在停止不了服务的情况。服务会持续下去直到Context.stopService() or stopSelf()被调用。onStartCommand返回的不同值对应不同的服务需要。
用户还可以通过Context.bindService()来持有一个服务连接。当服务没运行的时候将会调用oncreate方法,但不会调用onStartCommand方法。客户端会接收到服务onBind(Intent)方法回调的IBinder对象,允许客户端回调服务里面的方法。通常情况下,IBinder是由复杂的接口创建的。
上述两种启动方式可以同时存在
当一个服务在清单文件中声明,全局访问它将会拒绝。这时需要在自己的清单文件中声明合适的权限来启动,停止和绑定特定的服务。以Android 2.3为例,当调用Context.startService(Intent),我们也需要设置Intent.FLAG_GRANT_READ_URI_PERMISSION and/or Intent.FLAG_GRANT_WRITE_URI_PERMISSION。
这会暂时同意Service访问Intent指定的Uri,直到服务停止。这个对Service没有exported也同样适用。
Android系统会尽可能长的保留持有service的进程,但是当内存不足需要杀掉一些进程时,有如下的优先级:
1.当前服务正在回调onCreate(), onStartCommand(), or onDestroy()方法,则视为前台进程,不会被kill
2.当服务长期运行在后台时,有极高的可能性被kill
3.我们可以通过startForeground(int, Notification)来设置前台进程,除非在内存极端紧张下,否则不会被杀
Note 有很大的可能,一个正在运行的服务在内存不足时会被系统杀掉,但是被杀掉后,系统会稍后试着重启这个服务。我们可以在onStartCommand()方法用START_FLAG_REDELIVERY回调一个Intent来继续执行我们的服务