Android Train随堂记

  1. Fragment添加到返回栈(BackStack),可以通过FragmentManager的getBackStackEntry(int index)获取指定位置的Fragment实例信息BackStackEntry。
  2. 可以为Fragment回退栈添加监听
addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener listener)
/**
 * FragmentManager回退栈监听
 */
    @Override
    public void onBackStackChanged() {
        Timber.i("onBackStackChanged....");
        /**
         * 返回栈大小
         * 只有调用了addBackStack(String str)方法后,才会把Fragment加入到返回栈中
         */
        int backStackSize = supportFragmentManager.getBackStackEntryCount();
        /**
         * FragmentManager中包含的所有Fragment实例数
         * 当Fragment被移除后,getFragments()方法列表中指定位置的值变为null,size值不变
         */
        int totalFragments = supportFragmentManager.getFragments().size();
        for(Fragment fragment : supportFragmentManager.getFragments()) {
            Timber.i("Fragment Back Stack's Fragment is "+fragment.getClass().getSimpleName());
        }
    }

3.为适配不同屏幕尺寸,可以在布局文件前面加上尺寸限定符layout-sw480.xml(sw——small width),屏幕宽度大于等于480dp时使用此文件,然后再dimens文件中为不同尺寸的布局添加别名,例:

<item name=“main” type=“layout”>@layout/layout-sw480</item>

4.指定尺寸的屏幕使用指定的文件。layout-480x800.xml

5.确认是否存在可响应Intent的可用Activity,可调用queryIntentActivities(),获取能够处理Intent的Activity列表。

6.当使用Intent隐式启动其他的Activity时,如果有多个Activity符合要求,系统会给出选择框。开发者可以指定选择框的标题。

startActivity(Intent.createChooser(sendIntent, title));

7.通过Intent传递的数据类型有:“text/” “image/

8.app间共享文件的唯一方式就是传递文件的URI,Android SupportV4包中的FileProvider组件提供了getUriForFile()方法来为一个文件生成URI,并且可以为这个文件添加访问权限。

9.Android系统音频分好多种(音乐、闹钟、通知、电话铃声、系统声音等等),开发常用的是STREAM_MUSIC。操作音频的步骤为:获取焦点、注册音量按钮和音频焦点变化监听、播放音频、取消焦点、取消监听。其中获取音频焦点分两种,一种短暂的焦点(可以和其他声音同时存在,但播放时其他声音音量会降低),另一种是长期的焦点,如播放音乐。

10.Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTRUE); 使用Intent打开相机前,应添加判断:是否有相机App能处理此Intent。方式为intent.resolveActivity(getPackageManger),此方法返回能处理Intent的第一个应用的组件名称ComponentName

11.support v4包种PrintHelper类可以使应用具有打印图片、网页、自定义文档的功能。

  1. 向相册插入图片
    context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(path, fileName))));

13.移动设备的无线设备状态(3G)有三种:全功率(Full Power)、半功率(Low Power)、闲置(Standby),各种状态转换有一定的延迟。其中全功和半功都会比较严重的消耗电池。
每一次网路请求会使状态变成Full Power,请求结束后会延迟5秒转换到Low Power状态,再延迟12秒转换到Standby状态。也就是,每次网络请求会大概消耗电池20秒的时间。为了减少电池的消耗,可以有以下措施:a、预取数据,一个粗略的规则:如果一些数据在接下来的2-5分钟,有50%的可能被使用,就可以预取这些数据。b、捆绑请求,c、复用网络连接 d、推送取代轮询 d、模糊重复时钟取代周期更新

14.Android 5.0新增屏幕固定 lockTaskMode 新增用户控制功能(App Rstrictions)

15.根据Fragment的数量选择FragmentPagerAdapter和FragmentStatePagerAdapter

16.系统提供了为导航设计的工具类如NavUtils(获取父Activity、导航到父Activity中,检查当前Activity是否在不同的App任务中);TaskStackBuilder(为当前Activity创建任务栈)

17.FragmentActivity提供了OnBackPressed()方法,可以方便的管理返回键

18.虚拟表和sqlite表的运行方式类似,但虚拟表是通过回调向内存中的对象进行读取和写入的,而不是通过数据库文件。创建虚拟表时要添加virtual关键字。

19.设置了FLAG_LAYOUT_IN_SCREEN之后,你可以拥有与启用FLAG_FULLSCREEN后相同的屏幕区域,这个方法防止了状态栏隐藏和展示的时候内容区域的大小变化。

20.页面控件焦点顺序可以由nextFocusForward指定,方向导航nextFocusUp/nextFocusDown/nextFocusLeft/nextFocusRight

21.执行后台任务方式:IntentService(统一线程,队列顺序执行,LocalBroadcastManager回传处理结果)、CursorLoader(查询数据库或ContentProvider)、DownloadManager(系统提供的下载器,支持网络控制、断点下载、通知栏显示进度)、WakefulBroadcastReceiver(与IntentService配合使用,保证执行后台任务时设备唤醒)

22.我们可以使用PackageManager来切换任何一个在Manifest里面定义好的组件的开启状态。如广播:
ComponentName receiver = new ComponentName(context, myReceiver.class);
PackageManager pm = context.getPackageManeger();
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLE_STATE_ENABLED, PackageManager.DONT_KILL_APP);

23.AndroidUI线程优先级为5,异步线程默认优先级为5。线程优先级控制分为AndroidAPI(-20~19)和JavaAPI(1~10)。
AndroidAPI——>Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_DISPLAY);
主线程和异步线程均为0
JavaAPI——>Thread.currentThread.setPriority(Thread.NORM_PRIORITY); 主线程和异步线程均为5

24.测试库:AndroidJunitRunner 一款兼容JUnit4的测试运行器
Espresso UI测试库,适用于app内的功能性UI测试
UI Automator UI测试库,适用于跨应用的功能性UI测试
Hamcrest 断言库
Monkey和monkey runner SDK提供的两个app测试策略工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值