每日学习总结<二> 2015-9-1
- 子线程中无法更新UI,因为UI是线程不安全的。
- Android的UI单线程模式:
- 不能阻塞UI线程;
 - 不能从UI线程的外部访问Android UI toolkit。
 - 需要更新UI可以使用Handler传值。具体使用方式如学习总结五:
 
 
 - Android的UI单线程模式:
 
- ActivityManager的用法等等
 
 public String getMemoryState(Context context) {
         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
         activityManager.getMemoryInfo(info);
 //                Log.e(MainActivity.TAG, "剩余内存" + (info.availMem >> 100000) + "M");
         Log.e(MainActivity.TAG, "是否处于低内存:" + info.lowMemory);
         Log.e(MainActivity.TAG, "threshold: " + info.threshold);
         memoryValueLong = (info.availMem / 1048576);
         memoryValueString = Long.toString(memoryValueLong);
         Log.e(MainActivity.TAG, "可用内存: " + memoryValueString + "MB");
         return memoryValueString;
     }
     public long getMemoryValueLong(Context context) {
         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
         activityManager.getMemoryInfo(info);
 //                Log.e(MainActivity.TAG, "剩余内存" + (info.availMem >> 100000) + "M");
         Log.e(MainActivity.TAG, "是否处于低内存:" + info.lowMemory);
         Log.e(MainActivity.TAG, "threshold: " + info.threshold);
         memoryValueLong = (info.availMem / 1048576);
         return memoryValueLong;
     }
     public void killProcess() {
         ActivityManager activityManager2 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
         List<ActivityManager.RunningAppProcessInfo> infoList = activityManager2.getRunningAppProcesses();
         List<ActivityManager.RunningServiceInfo> serviceInfoList = activityManager2.getRunningServices(200);
         long beforeMem = getMemoryValueLong(MainActivity.this);
         Log.d(TAG, "-----------before memory info : " + beforeMem);
         int count = 0;
         if (infoList != null) {
             for (int i = 0; i < infoList.size(); ++i) {
                 ActivityManager.RunningAppProcessInfo appProcessInfo = infoList.get(i);
                 Log.e(TAG, "process name : " + appProcessInfo.processName);
                 //importance 该进程的重要程度  分为几个级别,数值越低就越重要。
                 Log.e(TAG, "importance : " + appProcessInfo.importance);
                 // 一般数值大于RunningAppProcessInfo.IMPORTANCE_SERVICE的进程都长时间没用或者空进程了
                 // 一般数值大于RunningAppProcessInfo.IMPORTANCE_VISIBLE的进程都是非可见进程,也就是在后台运行着
                 if (appProcessInfo.importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_SERVICE) {
                     String[] pkgList = appProcessInfo.pkgList;
                     for (int j = 0; j < pkgList.length; ++j) {
                         Log.e(MainActivity.TAG, "Killed package name: " + pkgList[j]);
                         activityManager2.killBackgroundProcesses(pkgList[j]);
                         count++;
                     }
                 }
                 long clearAfeterMemoryState = getMemoryValueLong(MainActivity.this);
                 Toast.makeText(MainActivity.this, "已清理内存:" + Long.toString(beforeMem - clearAfeterMemoryState) + " 当前内存为:  " + Long.toString(clearAfeterMemoryState), Toast.LENGTH_SHORT).show();
             }
         }
     }
- 创建快捷方式:
 
private void addShortCut() {
    Log.e(MainActivity.TAG, "====addShortCut()====");
    Intent shortCutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    //快捷方式名称
    shortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    shortCutIntent.putExtra("duplicate", false);
    ComponentName componentName = new ComponentName(this.getPackageName(), "." + this.getLocalClassName());
    shortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, new Intent(Intent.ACTION_MAIN).setComponent(componentName));
    //快捷方式的图标
    Intent.ShortcutIconResource iconResource = new Intent.ShortcutIconResource().fromContext(this, R.drawable.ic_launcher);
    shortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
    sendBroadcast(shortCutIntent);
}
每日学习总结<二> 2015-9-1的更多相关文章
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
		
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
 - 深度学习(二十六)Network In Network学习笔记
		
深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...
 - crawler4j 学习(二)
		
crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...
 - 从零开始学习jQuery (二) 万能的选择器
		
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
 - Android Animation学习(二) ApiDemos解析:基本Animators使用
		
Android Animation学习(二) ApiDemos解析:基本Animatiors使用 Animator类提供了创建动画的基本结构,但是一般使用的是它的子类: ValueAnimator.O ...
 - AspectJ基础学习之二搭建环境(转载)
		
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
 - WPF的Binding学习笔记(二)
		
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
 - AJax 学习笔记二(onreadystatechange的作用)
		
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
 - MyBatis学习系列二——增删改查
		
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
 
随机推荐
- Oracle Created (Default) Database Users
			
http://www.idevelopment.info/data/Oracle/DBA_tips/Database_Administration/DBA_26.shtml DBA Tips Arch ...
 - Swift不同storyboard之间的交互
			
如何实现多个Storyboard之间的切换 正如大家所知道的,Main-board是·程序运行的入口,如果找不到就会抛出异常,打开plist文件可以看到关于Main-board的描述,特别的制定了其b ...
 - Quartz.net2.2初体验
			
简介:Quartz.net是一个开源的作用调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作.相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气 ...
 - Magicodes.Shop——版本历史
			
Magicodes.Shop为湖南心莱信息科技有限公司(xin-lai.com)Magicodes系列产品之一. 产品中引用的Magicodes系列Nuget包的开源库地址为:https://gith ...
 - 使用扩展方法简化RadAjaxManager设置
			
相对于RadAjaxPanel,RadAjaxManager提供了更精确控制更新目标的设置,特别是在某些场景下,使用RadAjaxManager能够获得更好的性能. 但是,由于要明确设置目标,配置的代 ...
 - Hadoop笔记
			
教程: Elasticsearch.MongoDB和Hadoop比较: http://blog.csdn.net/hong0220/article/details/47631409
 - dojo/dom-construct.toDom方法学习笔记
			
toDom方法用来将html标签字符串转化成DOM节点.1.7之后toDom方法被分配到了dom-construct模块. require(["dojo/dom-construct" ...
 - java提高篇(十三)-----equals()方法总结
			
equals() 超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等.该方法的源码如下: public boolean equals(Object obj) { retu ...
 - 一天一小段js代码(no.4)
			
最近在看网上的前端笔试题,借鉴别人的自己来试一下: 题目: 写一段脚本,实现:当页面上任意一个链接被点击的时候,alert出这个链接在页面上的顺序号,如第一个链接则alert(1), 依次类推. 有一 ...
 - DISCUZ 自定义模板
			
DISCUZ 自定义模板 模板安装和维护 安装新模板 将模板template打包放在对应目录:template/ 后台 -> 界面 -> 风格管理 , 安装模板 后台 -> 界面 - ...