添加权限
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
在manifest.xml中的activity中设置configuration的属性
<activity android:name=".ConfigChange" android:label="@string/app_name" android:configChanges="orientation|keyboard"> </activity>
代码,重写onConfigurationChanged方法
private Button button1; private int width; private int height; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen_change); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { public void onClick(View v) { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); width = dm.widthPixels; height = dm.heightPixels; if (width < height) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } else { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } }); } public void onConfigurationChanged(Configuration newConfig){ if(newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)toast("已切换为横屏"); else{ toast("已切换竖屏"); } super.onConfigurationChanged(newConfig); } public void toast(String str) { Toast.makeText(ConfigChange.this, str, Toast.LENGTH_LONG).show(); }
导 语:有国外媒体日前发表了综述,对谷歌将谷歌音乐、Google eBookstore以及Android Market进行整合,并推出Google Play Store的原因进行了分析。指出谷歌此举主要源于谷歌音乐盒Google eBookstore的表现不佳,同时该公司要进一步强调“谷歌”这一品牌。http://developer.aiwgame.com/
以下为综述全文:
谷歌日前将把该公司出售音乐的网站谷歌音乐、出售电子图书的平台Google eBookstore以及出售其他包括应用程序和服务在内的数字产品的在线商店Android Market进行了整合,并更名为Google Play Store,该调整从周二起正式生效,此举是谷歌为改善自身在电子内容销售市场上的形象,并且更好地与苹果和亚马逊展开竞争而推出的最新措施。
这不禁让人联想到2005年当微软推出了一大堆MSN在线服务之后,对这些服务进行了整合并推出了Windows Live。尽管该服务并没有什么特别的亮点,但是还是向外界进一步强调了该公司的核心产品:Windows。
而如今,看来谷歌似乎也开始意识到重新确立起“谷歌”品牌的重要性,而不是Android在线服务,同时基本上借此一并处理掉了谷歌音乐以及eBookStore,特别是这两款服务本身的表现并不尽如人意。
尽管谷歌音乐已经经历了1年左右的测试阶段(作为在线音乐存储服务),并且音乐商店也于去年秋天正式推出,但是由于一直缺乏一大主要唱片公司——华纳方面的音乐产品,而另一方面,相同的在线音乐服务也很多,因此谷歌在这一领域并无优势可言。
因此最后谷歌走出这样一步,并不出人意料。
eBookstore在2010年正式推出,在其后的6个月当中,用户总共从eBookstore当中下载了250万册图书,一年的销售量大约为500 万册。而相比之下,亚马逊在2010年的电子书Kindle Book的销售量应该为2200万册,而亚马逊在之后进而宣布该公司的电子书销售量已经超越了实体书销售量。而苹果方面在2011年10月则指出该公司在 苹果书店开业之后的不到2年内已经售出了1800万册电子书。
然而Android市场则是大获成功,该市场在去年12月已经完成了100亿次下载,尽管其增长速度尚无法达到苹果App Store的高度,但是总体发展还是一帆风顺的。
Service 与 Thread 的区别
很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下。
1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。
因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。