0%

Eclipse修改log缓冲大小

Eclipse修改log缓冲大小

大家有木有这种情况,看着已经定位的错误log,一行一行的消失。。我的心也跟着崩溃了。

这是因为默认Log的缓存只有5000条

我们需要在Window-Preferences-Android-logcat…把5000加个0

Eclipse导入库报红叉

Eclipse导入库报红叉

目录没在同一个

ImageView background和src的区别

ImageView background和src的区别

在用到ImageView设置背景选择器的时候,要用. setImageResource ()。(对应布局的src属性),这样图片有多大就显示多大,用background将会拉伸图片适应宽高。ImageButton和此一样的用法。

ListView smoothScrollToPosition 定位不准笨方法解决

ListView smoothScrollToPosition 定位不准笨方法解决

有时需要列表平滑滚动到指定位置

但和预期位置有出入

网上查的原因说是Android的一个bug

解决方法如下

ListView.smoothScrollToPosition(0)

ListView.postDelayed(new runnable){

ListView.setSelection(0)

}

ListView 设置viewtype后数组越界

ListView 设置viewtype后数组越界

一个很微妙的bug

ListView的getItemViewType (int pos)

返回一定从0开始

切记

ListView加背景文字透明效果去不掉+跑马灯

ListView加背景文字透明效果去不掉+跑马灯

纠结了好久,设置ListView背景后,每次点击都感觉文字有层透明的图片遮住了,那是因为adapter中的布局文字未设置颜色,系统默认的就会出现透明的感觉。

另附加上跑马灯




图片发自简书App

然后在Adapter找到对应的TextView, setSelected(true)

跑马灯走你

ListView自动滚到最后一条

ListView自动滚到最后一条

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)

可以在需要滚的地方滚

Manifest merger failed with multiple errors

Manifest merger failed with multiple errors

项目的清单文件和库里面或者arr里面的清单文件有重复项并且不一致,替换为一致即可。比如我遇到的情况是meta data不一致

Monkey压力测试从0到1,拿去就能用

Monkey压力测试从0到1,拿去就能用

以前做炒股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

Service官方直译深入理解(基础知识完)

Service官方直译深入理解(基础知识完)

Service

被设计为不和用户直接交互,在后台执行长期操作的一种系统组件,也可被其它应用使用。每一个服务必须在AndroidManifest中声明。服务可以通过Context.startService() and Context.bindService().启动。Note:service运行在主线程,因此执行网络操作需要另起线程,但IntentService可以解决这个问题。

What is a Service?

首先,我们来说说服务不是什么:

1:服务不是一个单独的进程,通常情况下它运行在应用进程的一部分

2.服务不是线程,它不能在应用无响应时工作

下面来说说服务两个主要的特征:

1.很方便的通知系统,我有一些后台任务需要处理,直到明确停止服务

2.很方便的给其它应用提供功能

Note:因为服务很简单,所以我们可以以任何我们想交互的方式来设计一个服务。我们可以将服务看成一个可以随时调用它方法的普通的Java对象,通过AIDL来交互。

Service Lifecycle

服务可以通过两种方式启动。如果有人调用了Context.startService(),那么服务的oncreate()和onStartCommand(Intent, int, int)会被回调,不管执行多少次startService,服务都不会重新创建,而会多次调用onStartCommand,所以并不存在停止不了服务的情况。服务会持续下去直到Context.stopService() or stopSelf()被调用。onStartCommand返回的不同值对应不同的服务需要。

用户还可以通过Context.bindService()来持有一个服务连接。当服务没运行的时候将会调用oncreate方法,但不会调用onStartCommand方法。客户端会接收到服务onBind(Intent)方法回调的IBinder对象,允许客户端回调服务里面的方法。通常情况下,IBinder是由复杂的接口创建的。

上述两种启动方式可以同时存在

Permissions

当一个服务在清单文件中声明,全局访问它将会拒绝。这时需要在自己的清单文件中声明合适的权限来启动,停止和绑定特定的服务。以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也同样适用。


Process Lifecycle

Android系统会尽可能长的保留持有service的进程,但是当内存不足需要杀掉一些进程时,有如下的优先级:

1.当前服务正在回调onCreate(), onStartCommand(), or onDestroy()方法,则视为前台进程,不会被kill

2.当服务长期运行在后台时,有极高的可能性被kill

3.我们可以通过startForeground(int, Notification)来设置前台进程,除非在内存极端紧张下,否则不会被杀

Note 有很大的可能,一个正在运行的服务在内存不足时会被系统杀掉,但是被杀掉后,系统会稍后试着重启这个服务。我们可以在onStartCommand()方法用START_FLAG_REDELIVERY回调一个Intent来继续执行我们的服务


基础完