摘要:
PolicyManager类位于framework\base\core\java\com\android\internal\policy目录中的PolicyManager.java文件中。PolicyManager主要用于创建Window类、LayoutInflater类和WindowManagerPolicy类,它扮演着简单工厂模式中的工厂类角色,而抽象产品角色由IPolicy接口实现,具体产品角色由Policy类实现。它们的关系如下图所示:从下面三个类的代码可以看出,都使用了hide注解,因此,这三个类都是不对外公开的API,只限于Framework内部使用。抽象产品类IPolicy实现如 阅读全文
摘要:
重启装载器当你使用initLoader()时,如果指定ID的装载器已经存在,则它使用这个装载器.如果不存在呢,它将创建一个新的.但是有时你却是想丢弃旧的然后开始新的数据.要想丢弃旧数据,你应使用restartLoader().例如,下面这个SearchView.OnQueryTextListener的实现在用户查询发生改变时重启了装载器,装载器于是需重启从而能使用新的搜索过虑来进行一次新的查询.public boolean onQueryTextChanged(String newText) { // 当动作栏的搜索字串发生改时被调用. // 更新搜索过虑,然后重新启动装载利用... 阅读全文
摘要:
译自:http://www.romancortes.com/blog/1k-rose/转载请标明作者和出处:http://blog.csdn.net/hfahe 我曾参与js1k爱情主题的第四次活动(译者注:关于有趣的js1k,可以看看我上一篇博文《JS1k比赛与3D玫瑰》)。我所提交的是一个静态图像,由程序生成的三维玫瑰。你可以在这里看到它。 它是通过显式分段三维曲面的蒙特卡洛采样所实现的。我要在这篇文章中尝试解释所有内容。关于蒙特卡罗方法的简短说明 蒙特卡罗方法是令人难以置信的强大工具。我一直在使用它们来实现很多功能优化和采样的问题。相比起设计和编写算法,如果你有更多CPU时... 阅读全文
摘要:
初学者在尝试位于不同Java包目录下Activity之间的跳转时,经常会在运行时得到ActivityNotFoundException,下面就来看看不同包目录下Activity跳转的实现。首先,我们创建两个Activity:JumpTestActivity和JumpTestActivity2,JumpTestActivity中有个按钮,当用户按下时会跳转到JumpTestActivity2,功能很简单。首先实现JumpTestActivity的代码,它位于hust.iprai.asce1885包中:public class JumpTestActivity extends Activity { 阅读全文
摘要:
一个使用装载器的应用会典型的包含如下组件:一个Activity或Fragment.一个LoaderManager的实例.一个加载被ContentProvider所支持的数据的CursorLoader.或者,你可以从Loader或AsyncTaskLoader实现你自己的装载器来从其它源加载数据.一个LoaderManager.LoaderCallbacks的实现.这是你创建新的装载器以及管理你的已有装载器的引用的地方.一个显示装载器的数据的途径,例如使用一个SimpleCursorAdapter.一个数据源,比如当是用CursorLoader时,它将是一个ContentProvider.启动一 阅读全文
摘要:
也许它最开始只是作为一件好玩的事,但一年一度的JS1K比赛现在已经不再只是一个玩笑。今年的比赛已经开展得如火如荼,并且因为用小于1K的JavaScript脚本渲染的3D玫瑰的出现而显得更加壮观。 JS1K大赛旨在找寻互联网上最好的JavaScript创意,只有一个小条件 - 使用的代码必须小于1K。这可能听起来很疯狂,因为一些JavaScript框架 – 只是框架本身!- 代码量就超过了100k,但是从几年前开始时,JS1K的尝试就给人留下了深刻的印象。 今年最令人瞠目结舌的努力之一是开发者罗曼科尔特斯的作品3D渲染的玫瑰。依靠蒙特卡罗方法以保持代码的大小,科尔特斯的代码为以爱... 阅读全文
摘要:
装载器从android3.0开始引进。它使得在activity或fragment中异步加载数据变得简单。装载器具有如下特性:它们对每个Activity和Fragment都有效。他们提供了异步加载数据的能力。它们监视数据源的一将一动并在内容改变时传送新的结果。当由于配置改变而被重新创建后,它们自动重连到上一个加载器的游标,所以不必重新查询数据。装载器API概述在使用装载器时,会涉及很多类和接口们,我们在下表中对它们总结一下:Class/Interface说明LoaderManager一个抽像类,关联到一个Activity或Fragment,管理一个或多个装载器的实例。这帮助一个应用管理那些与Ac 阅读全文
摘要:
为了软件系统在系统层级上保持整洁,需要为系统演化出恰当的抽象等级和模块。其中一个有效的方法就是将系统的构造和使用分开,因为构造和使用是非常不一样的过程。软件系统应将启始过程和启始过程之后的运行时逻辑分离开,如果在启始过程中构建应用对象,将会存在相互缠结的依赖关系。将关注的方面分离开,是软件技艺中最古老也是最重要的设计技巧。不幸的是,多数应用程序没能做到分离处理,启始过程代码很特殊,被混杂到运行时逻辑中,下面的代码片段是著名的延迟初始化/赋值,这种处理的好处是在真正用到对象之前,无需操心这种架空构造,启始时间也会缩短,而且能够保证永远不会返回null值。public Service getSer 阅读全文
摘要:
线程安全 在某些情况下,你实现的方法可能会在不同的线程中调用,所以它们必须被实现成“线程安全的”。 这首先体现在可以远程调用的方法上—比如在boundservice中的方法。当在一个进程中调用同一个进程中的IBinder上所实现的方法时,这个方法会在调用者的线程中运行(IBinder不理解的看这里:http://blog.csdn.net/nkmnkm/article/details/6453218)。然而,当这个调用从另一个进程中发出时,方法会在线程池中某个被选出的线程中执行,这个线程在与IBinder相同的进程中(它不是运行于进程的界面线程中)。例如,尽管一个service的onBin.. 阅读全文
摘要:
Why C++ ? 王者归来29人关注此资讯, 我要关注(收藏)(?) | 新闻投递 虫虫 发布于: 2012年02月02日 (58评) 因为又有人我去Quora的C2C站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文《2012 不宜进入的三个技术点》ActionScript,Thread 和 C++, C++争议的争议最大。(要我说,.NET比C++更需要慎重进入,呵)。我就在这里回复一下这个问题吧。正好我前段时间看到一个视频,这个演讲视频还比较著名,这个演讲者是Exceptional C++ 和 C++ Coding Standards 的作者,还是ISO C+ 阅读全文