当前位置: 首页 > >

Android第一行代码笔记(一)

发布时间:

第1章 开始启程,你的第一行 Android 代码

    Android 系统架构:

    Linux内核层、系统运行库层、应用框架层、应用层

    四大组件

    Activity, Service, BroadCast Receiver, Content Provider.


第2章 先从看得到的入手,探究活动

    活动是一种可以包含用户界面的组件, 所有的活动都要在AndroidManifest.xml 中注册.

    销毁一个活动:finish()Back键.

    Intent:

    Intent 是 Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动服务、以及发送广播等场景.


    显式Intent

    Intent intent = new Intent(FirstActivity.this, SecondActivity.class)
    startActivity(intent);

    隐式Intent

    指定action 和 category 等信息,然后交由系统去分析这个 Intent, 并帮我们找出合适的活动去启动.
    在标签下配置的内容,可以指定当前活动能够响应的 action 和 category.

    Intent intent = new Intent("com.example.activitytest.ACTION_START");
    intent.setData(Uri.parse("http://www.baidu.com"));

    向下一个活动传递数据

    添加数据: intent.putExtra("extra_data", data);
    取出数据:String data = intent.getStringExtra("extra_data");

    返回数据给上一个活动

    startActivityForResult(intent, 1);

    Activity生命周期


    生命周期

    活动被回收了怎么办



    应用中有一个活动 A,用户在活动 A 的基础上启动了活动 B,活动 A 就进入了 停止状态,这个时候由于系统内存不足,将活动 A 回收掉了,然后用户按下 Back 键返回活 动 A,会出现什么情况呢?其实还是会正常显示活动 A 的,只不过这时并不会执行 onRestart() 方法,而是会执行活动 A 的 onCreate()方法.


    onSaveInstanceState()回调方法,在活动被回收之前调用,可以保存临时数据.


    onSaveInstanceState()方法会携带一个 Bundle 类型的参数,比如可以使用 putString()方法保存字符串, 使用键值对的形式保存.

    活动的启动模式

    standard: 每次启动都会创建该活动的一个新的实例,放入返回栈中.

    singleTop:栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例.若不在栈顶,会重新创建Activity.

    singleTask:每次启动该活动时系统首先 会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈.

    singleInstance:会启用一个新的返回栈来管理这个活动.解决多个应用共享Activity实例的问题。


第3章 软件也要拼脸蛋,UI 开发的点点滴滴

    常用控件

    TextView, Button, EditText, ImageView, ProgressBar, AlertDialog, ProgressDialog

    布局


    LinearLayout: vertical 或horizontal

    RelativeLayout: android:layout_alignParentLeft…

    FrameLayout: 所有控件都在左上角(重合)

    TableLayout:

    GridLayout:

    AbsoluteLayout: 弃用

    ListView


    需要借助适配器来将数据传给ListView.

    ArrayAdapter。它可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入.

    借助一个 ViewHolder 来进行性能优化.



    新增了一个内部类 ViewHolder,用于对控件的实例进行缓存。所有控件的实例都缓存在了 ViewHolder 里,就没有必要每次都通过 findViewById()方法来获取控件实例了。


    点击事件:setOnItemClickListener()


第4章 手机*板要兼顾,探究Fragment

    Fragment与Activity通信


    调用 FragmentManager 的 findFragmentById()方法,可以在活动中得到相应Fragment的实例, 然后就能轻松地调用碎片里的方法了.

    每个Fragment中都可以通过调用 getActivity()方法来得到和当前Fragment相关联的Activity实例 .

    Fragment生命周期:


    总是依附于Activity存在.

    比Activity多的回调方法:


      onAttach() 当碎片和活动建立关联的时候调用。 onCreateView() 为碎片创建视图(加载布局)时调用。 onActivityCreated() 确保与碎片相关联的活动一定已经创建完毕的时候调用。 onDestroyView() 当与碎片关联的视图被移除的时候调用。 onDetach() 当碎片和活动解除关联的时候调用。


第5章 全局大喇叭,详解广播机制

    广播机制


    标准广播(Normal broadcasts): 异步有序广播(Ordered broadcasts): 同步,可截断

    接收系统广播


    创建广播接收器: 新建一个类,继承自 BroadcastReceiver,并重写父类的 onReceive()方法.

    动态注册



    在代码中注册,注册的逻辑写在 onCreate()方法中.


    静态注册



    在AndroidManifest.xml中注册,比如实现开机启动.


    发送自定义广播


    标准广播: sendBroadcast()有序广播: sendOrderedBroadcast()方

    使用本地广播


    使用LocalBroadcastManager 来对广播进行管理.本地广播是无法通过静态注册的方式来接收的.发送本地广播比起发送系统全局广播将会更加高效.

第6章 数据存储全方案,详解 持久化技术

    文件存储


    适合用于存储一些简单的文本数据或二进制数据.将数据存储到文件中


    Context 类中提供了一个 openFileOutput()方法
    out = openFileOutput("data", Context.MODE_PRIVATE);


    从文件中读取数据
    Context 类中还提供了一个 openFileInput()方法

    SharedPreferences


    使用键值对存储将数据存储到 SharedPreferences 中

    首先需要获取到SharedPreferences对象(3种方法)

    Context 类中的 getSharedPreferences()方法Activity 类中的 getPreferences()方法PreferenceManager 类中的 getDefaultSharedPreferences()方法开始存数据(3步):

      调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象向 SharedPreferences.Editor 对象中添加数据,比如putString()等.调用 commit()方法将添加的数据提交.
    从 SharedPreferences 中读取数据

    通过SharedPreferences 对象,然后分别调用它的 getString()、getInt()和 getBoolean()等方法.

    SQLite数据库



- 创建数据库

- 升级数据库

- 添加数据

- 更新数据

- 删除数据

- 查询数据

- 使用SQL



友情链接: