【白痴弟弟和你加强应用层】阅读 Develop API Guides 思考(一个)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

    • 动态检測设备属性
    • 关于targetSdkVersion的含义
    • 关于onSaveInstanceState的高级知识
    • 关于startActivity和Intent

动态检測设备属性

我们能够使用以下的代码动态检測当前设备是否具备某一个特性,如是否有方向传感器

PackageManager pm = getPackageManager();
if(!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device does not have a compass, turn off the compass feature
    disableCompassFeature();
}

关于targetSdkVersion的含义

我们常常在清单文件中面这样设置

<manifest ... >
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
    ...
</manifest>

android:minSdkVersion是指我们的App兼容的最低版本号,也就是我们的App在这个版本号之下就不能正常执行了,可能是由于使用了更高版本号的API或者是Theme,反正就是不能正常执行。

而android:targetSdkVersion属性所指定的则是经过我们优化的最高版本号。这个属性并不能保证我们我们的App不能执行在更高的版本号上。而是用来说明我们的App是否应该继承在更高版本号上发生的行为改变。假设我们没有更新:targetSdkVersion到最新的版本号,那么在最新的版本号上执行的时候。那么系统就假设我们的App是须要向后兼容的。

举个样例,在4.4版本号中,AlarmManager的行为发生了改变。为了节省电量,系统会将时间相差点儿相同的Alarm放在一起执行,这样就不能保证你的Alarm准时执行。所以说,假设你的targetSdkVersion大于等于19,那么执行时间就是不确定的。可是假设是小于19,那么就会使用之前老的API。保证Alarm能够准时执行。

关于onSaveInstanceState()的高级知识

我们都知道假设实现onSaveInstanceState(),能够在里面保存一些界面的状态,这样在UI恢复的时候,可能会使用保存的值恢复UI现场。

事实上,默认的onSaveInstanceState()实现会保存当前界面全部具有id属性的View的状态,用于现场恢复。Android的framework框架中的差点儿全部的控件都恰当的实现了onSaveInstanceState()方法,比方EditText会保存文本。CheckBox会保存选中状态等。

所以,假设你想恢复现场,给布局中的控件都设置一个id属性就ok啦~

当然,我们也能够自己控制让View不自己保存状态。仅仅要设置 android:saveEnabled为false或者是调用setSaveEnabled()就能够了

另外。假设你想測试你的Activity能不能正常的保存用户数据,你仅仅须要改变你的屏幕方向就能够測试啦。在屏幕方向发生改变的时候。你的Activity会被Destory然后Create,Activity上的信息都不应该丢失,否则,去改改你的代码吧。

事实上啊,之所以屏幕方向改变,Activity会又一次生成,是由于在执行时。设备的configurations发生了改变,为了让我们App能够感应这样的变化并作出正确的反应。系统会又一次载入当前的Activity,这样的变化包含屏幕方向变化,语言环境变化,键盘状态变化等等。和我们在Activity的标签下设置的 android:configChanges是全然一样的

关于startActivity和Intent

我们使用Intent来启动一个Activity是再简单只是的事情了,可是,假设你想要发送一个隐式意图开启Activity的话。你须要考虑没有Activity与你的Intent的Action匹配的情况,由于这样会造成程序crash。所以,以后在发送隐式意图的时候,用以下的这样的形式吧

Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER)
                .putExtra(AlarmClock.EXTRA_MESSAGE, "Timer‘")
                .putExtra(AlarmClock.EXTRA_LENGTH, 60)
                .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        } else {
            Toast.makeText(this, "No Activity", Toast.LENGTH_SHORT).show();
        }

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-10 03:42:05

【白痴弟弟和你加强应用层】阅读 Develop API Guides 思考(一个)的相关文章

【凯子哥带你夯实应用层】读 Develop API Guides 有感(一)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 动态检测设备属性 关于targetSdkVersion的含义 关于onSaveInstanceState的高级知识 关于startActivity和Intent 动态检测设备属性 我们可以使用下面的代码动态检测当前设备是否具备某一个特性,如是否有方向传感器 PackageManager pm = getPackageManager(); if(!pm.hasSystemFeature(PackageMan

Android设计和开发系列第二篇:Action Bar(Develop—API Guides)

Action Bar IN THIS DOCUMENT Adding the Action Bar Removing the action bar Using a logo instead of an icon Adding Action Items Handling clicks on action items Using split action bar Navigating Up with the App Icon Adding an Action View Handling collap

Android设计和开发系列第一篇:Notifications通知(Develop—API Guides)

Notifications IN THIS DOCUMENT Design Considerations Creating a Notification Required notification contents Optional notification contents and settings Notification actions Notification priority Creating a simple notification Applying an expanded lay

Develop系列&mdash;API Guides

介绍 应用基础 app用Java语言编写,以apk为后缀. apk运行在自身安全的沙盒中: Android是多用户Linux系统,每个app就是一个不同的用户 默认的,系统给每个app分配唯一的Linux用户ID,并设置访问权限 每个进程有自己的虚拟机VM 默认的,每个app运行在自己的Linux进程 android系统实行最小权限原则. 然后,有两种方式可以在不同app之间共享数据或者使用系统服务: 两个app共享相同的Linux用户ID,他们就能互相访问各自的文件,app必须是相同签名的 a

阅读,享受,思考——一个爱书人写给大家的文章

我从初中开始有个不知是好还是坏的习惯,就是非常爱去逛校门外的书店,而且特别爱买课外练习册,什么黄冈密卷,龙门题库,X年真题X年高考,真是买了好多好多,结果当然是绝大部分都是买过之后大部分都没有做过.在高考后的那个暑假整理以前的书时候,看到那么多空白着的练习册,真是心生愧疚啊.可人啊就是秉性难改啊.到了大学,当然不会再买练习册了,我如愿学了我最喜欢的计算机,所以校门外的那家书店我四年里都不知道逛了多少次,买了多少本书,特别是上了大学自己的经济上可以管理每个月的生活费了,而后来知道了当当网更是让我可

关于阅读技术类图书的思考

很多做编程朋友都喜好读书的.但为什么要读书?读什么书?读多少书?如何读书?这都成了很大的问题.我想就这些问题谈谈我自己的看法.注意,本文读者最好是那些时间不多,希望通过读一些好书能有大收获的朋友.如果那种只要是技术书都要去读读的朋友,你的精力和时间实在太多了,本文应该不适合你. 首先,在中国,程序员只能靠读书来提高自己的编程或设计能力,这本身其实是很无耐的,因为国内软件编程方向的教育已经远远落后于编程业的发展了.名师凤毛麟角,能够听到名师的课的人非常少.运气好,进了大学或者公司,有个高手师兄或者

手机卫士-10

手机卫士-10 课1 窗口小部件widget widget是什么? 阅读文档doc develop--->API Guides---->App Widgets linux命令ps:查看进程 kill+进程pid:杀掉进程 窗口小部件widget使用方法 创建widget测试 依照文档实现窗口小部件widget 创建widget窗口小部件的步骤 1.创建一个新的实现类:父类是AppWidgetProvider //1.写一个类继承 AppWidgetProvider //因为这个类是一个广播接收

Android 界面编程 探险(一)

Android应用大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,所有UI组件都继承了View类,Android采用"组合器"设计模式来设计View和ViewGroup(ViewGroup是View的子类),Android图形用户界面的组件层次如下图: 在此强烈建议阅读官方文档(Documentation for Android SDK,打开index.html,Develop -> API Guides / Reference)

手机卫士04_ 手机定位_超级管理员_数据库

1.1 定位功能简介: 常见的定位方式: ①网络定位:(IP地址),拨号上网一般是动态分配,如果网吧公司,就是静态分配的. 比较有名的数据库:纯真Ip数据库,有很多公开的ip信息 根据ip地址定位.可能很准确,也可能只是一个大概的范围 ②基站定位:必须有手机卡才能基站定位 根据手机与基站联系的信号强弱+算法定位. 定位效果:可能很准确,(与基站位置相关,周围基站越多越近效果越好.) ③GPS定位:采用卫星定位 利用卫星的位置与手机GPS模块的建立联系,通过算法判断位置. 至少需要三颗卫星,获取手