
总结
文章平均质量分 75
studyboyjlu4
这个作者很懒,什么都没留下…
展开
-
发送数据给其他activity
ACTION_SEND:没有指名送给谁,一般用Intent.chooser把它包起来,这样会询问user到底发给谁。ACTION_SENDTO:在data的uri中指明了发给谁。他们都可以putExtra(k,v);这个k必须是对方能识别的,否则这些内容就被忽略了setType():Type其实是string,对端拿出来也当做string操作。可以支持类似image/*,*/*这种类型原创 2013-11-17 11:02:03 · 795 阅读 · 0 评论 -
非UI thread更新UI的方式
Android的UI thread并非线程安全,因此所有UI的操作必须在UI thread完成。主要方法有:1,使用AsyncTask,AsyncTask中的onXxxxx callback都在UI thread中执行,后台任务在doInBackground方法中执行完成后会把结果传递给doPostExecute,可以在doPostExecute中更新UI2,使用Handl原创 2013-11-16 15:21:08 · 1002 阅读 · 0 评论 -
Android中的声音控制
先说几个概念,第一个是Audio Stream,Audio Stream可以认为是一个可以单独进行声音控制的通道。music,alarm,notification,电话铃声,系统声音等等都有自己独立的Audio Stream(普通app使用STREAM_MUSIC ),可以分别调整音量的大小,例如你进入一个app可以用音量键调整它的声音大小,如果这个app不会播放声音那调整的就是手机铃声。原创 2013-11-21 22:30:18 · 2172 阅读 · 0 评论 -
GridLayout和GridView的区别
GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填充到GridView中的每一个子View。GridLayout是一个布局,它大大简化了对复杂布局的处理,提高了性能。他直接继承自ViewGroup,和LinearLayout这种是类似的。我感觉GridVi原创 2014-01-12 22:03:52 · 16517 阅读 · 2 评论 -
Future和FutureTask
public interface Future Future 表示异步计算的结果。Future有个get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态,然后会返回结果或者抛出异常。 Future 主要定义了5个方法: 1)boolean cancel(boolean mayInterruptIfRunning):试图取消对此任务的执行。如果任务已完成转载 2014-01-18 17:02:15 · 526 阅读 · 0 评论 -
Synchronized和ReentrantLock
import java.util.LinkedList;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;public class StudyJava { Buffer mBuffer = new Buffer(5);; /** * @param原创 2014-01-18 17:39:10 · 571 阅读 · 0 评论 -
android:protectionLevel
定义自己的permission的时候要写明android:protectionLevel,这个属性有四个值。分别是:normal:这个用于比较低风险的权限,如果一个权限的android:protectionLevel设置为normal,当某个app申请这个权限时system会自动授予app权限,而不用询问用户。dangerous:用于高风险的权限,例如可能访问私人数据(例如短信,联原创 2014-02-07 21:51:56 · 3289 阅读 · 0 评论 -
sharedUserId
如果两个apk在manifest中声明相同的sharedUserId,那么就可以peichengchen原创 2014-04-22 21:39:49 · 891 阅读 · 0 评论 -
android中share文件
例如app1请求app2的文件,1,app1发intent启动app2的一个activity显示文件列表2,user选择一个文件3,app2的activity返回文件的uri给app1关键点:app1发送intent部分:这部分非常简单,发送ACTION_PICK即可,最好带上type,例如setType("image/*");app2提供文件的uri:原创 2013-11-18 22:37:55 · 3295 阅读 · 0 评论 -
如何让手机保持唤醒状态
手机的正常行为是闲置一段时间后屏幕变暗,然后熄灭,然后CPU关闭。有些场景需要改变这种行为,例如播放视频时希望屏幕不要熄灭;正在进行一些后台操作比如下载东西的时候希望CPU不要停止;保持屏幕点亮:在activity中执行如下code(不要在service或者其他组件调用)getWindow().addFlags(WindowManager.LayoutParams.FL原创 2013-12-08 11:35:04 · 4722 阅读 · 0 评论 -
Android Support Library
Android support library是google以jar包形式提供的一个代码库,里面包含一些向后兼容的framework API以及一些只有在这个library中才提供的feature。support library的jar文件名字中有一个版本信息,它指明了下后兼容到哪个版本,例如android-support-v4.jar说明向后兼容到level 4(android 1.6),即原创 2013-12-15 14:37:34 · 2440 阅读 · 0 评论 -
Navigation Drawer
第一步,实现layout。它的root必须是一个DrawerLayout,这个layout定义在android.support.v4.widget下面,如果找不到就用SDK manager更新一下support lib。然后为DrawerLayout添加两个child view,一个定义显示内容的区域,一个定义从左边划出的那个菜单。例如<android.support.v4.wid原创 2013-12-15 19:17:58 · 725 阅读 · 0 评论 -
ArrayAdapter和自己创建BaseAdapter用于ListView的示例
ArrayAdapter非常简单,但是用于ListView的时候限制太多,一般只用于显示单行的文本。最常见的是ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mContent);mContent是一个String[],把字符串放进default layout android原创 2013-11-17 21:42:13 · 682 阅读 · 0 评论 -
在android中拍照录像
1,在manifest中声明使用摄像头,也可以添加android:required="false"来说明希望有这个设备,但不是必须的。如果是这样在code中要检查是否有这个设备hasSystemFeature(PackageManager.FEATURE.CAMERA)2,拍照需要发送的action: MediaStore.ACTION_IMAGE_CAPTURE原创 2013-11-23 10:57:11 · 725 阅读 · 0 评论 -
如何有效使用bitmap
使用bitmap容易遭遇out of memory exception,主要由以下三个原因:每个android app分配的内存有限;bitmap比较耗费内存,例如1300w像素图片,每个像素可能占4个字节;有些view group例如list view,grid view中可能包含很多bitmap。综上,使用bitmap时主要考虑节省内存,方式主要是减小bitmap的大小原创 2013-11-24 22:02:54 · 782 阅读 · 0 评论 -
ThreadPoolExecute
如果想只执行一次可以用普通的thread;如果想重复执行,但是同一时间执行一个可以使用IntentService;如果要同时执行多个可以使用ThreadPoolExecute,因为可以同时执行多个实例所以里面的方法必须是线程安全的,合理的使用synchronized 。一般情况下每一种runnable使用一个ThreadPool,这个pool只有一个实例。创建ThreadP原创 2013-12-07 21:23:39 · 3018 阅读 · 0 评论 -
performance——省电
有很多操作,例如周期性的和服务器Sync(Email,Cloud Service),周期性的更新下载进度,等等是比较耗电的。因此可以根据电量,是否充电,Dock状态,网络连接状态这些条件来调整更新频率,以便节省电量。和电池相关的几个Broadcast,都是battery manager发出的:1, ACTION_BATTERY_CHANGED这是个sticky broadcast,并且原创 2013-12-07 12:10:55 · 646 阅读 · 0 评论 -
Alarm
android的alarm机制可以让你在app的生命周期之外做一些基于时间的操作,例如周期性的更新mail,天气信息等等。实作的时候一般是通过alarm manager在具体的时间点或者某一个时间间隔发出intent或者broadcast,另一侧在receiver中执行相关的操作。创建alarm在创建alarm的时候需要确定alarm的类型,alarm的时间或者时间间隔(如果你指定的时原创 2013-12-08 15:04:33 · 805 阅读 · 0 评论 -
Performance——manage app's memory
RAM:虽然虚拟机可以帮你做垃圾回收,但是程序员最好还是要做到以下几点:1,避免memory leak,通常是因为使用一些全局性质的变量引用了某个Object。2,在合适的地方主动释放Object的引用,当然有些变量如块作用域中的局部变量GC可以直接帮你回收。因为android不提供内存的swap space,所以释放内存的唯一途径就是把Object的引用置为null,唯一的例原创 2013-12-03 22:08:12 · 652 阅读 · 0 评论 -
Performance——layout相关
1,layout层级不要嵌套太深,嵌套层级深了加上使用layout_weight会显著降低performance,主要是影响measure时间2,复用layout可以使用 layout_width="match_parent" layout_height="wrap_content" />中的属性可以重写xxx.x原创 2013-12-05 21:53:53 · 992 阅读 · 0 评论 -
读书笔记
1. Getting Started1.1 Building YourFirst App1.1.1 Createing anAndroid Project1.1.2 Running YourApp1.1.3 Building aSimple UI以上三节没什么可说的1.1.4 Start AnotherActivityAndroid:textIsSelect原创 2014-02-19 23:03:30 · 1583 阅读 · 0 评论