2024-12-23
Android/Java
00

目录

一、基础知识
二、实现 DEMO

一、基础知识

  1. Android SDK/NDK:

    • Android SDK 包含了调试器、库、模拟器、文档、实例代码和教程。
    • NDK 是支持使用 C/C++ 开发的工具包,适用于原生应用程序开发。
  2. ADT:
    用于 Eclipse 的 Android 开发工具(ADT)插件,扩展了 Eclipse IDE,支持 Android 应用程序的创建和调试。

  3. AVD (Android Virtual Device):
    AVD 是一个模拟器实例,用来模拟真实设备。

  4. Activity:
    Activity 是一个包含应用用户界面窗口的组件,一个应用可以有多个 Activity。Activity 是所有程序的核心,具有自己的生命周期,由系统控制,程序无法改变。

  5. Intent:
    Intent 是 Android 中的消息通信机制,用于组件之间的通信,实现调用者和被调用者的解耦。

    • 显式 Intent: 通过指定具体的组件类来启动对应的组件。
    • 隐式 Intent: 不指定组件属性,需要系统根据信息确定满足此 Intent 的组件。
  6. Toast:
    Toast 是 Android 中用来显示信息的一种机制,与 Dialog 不同,Toast 没有焦点,显示时间有限,自动消失。

  7. Android 操作系统:
    Android 是基于 Linux 的开源手机操作系统。

  8. APK (Android Package):
    APK 是 Android 安装包。APK 文件实际上是 zip 格式,但后缀名修改为 APK。通过解压可以看到 .dex 文件,Dex 是 Dalvik VM 执行文件的格式。

  9. Android 四大组件:

    • Activity: 一个单独的屏幕,可以显示控件并处理用户事件。
    • Broadcast Receiver: 处理广播的组件,通过 Context.sendBroadcast() 等方法发送广播。
    • Service: 在后台运行的组件,与其他组件交互,用于执行长时间的操作。
    • Content Provider: 用于对外共享数据,提供统一接口进行数据操作。
  10. 常用布局管理器:

    • LinearLayout: 线性布局,分为水平和垂直两种单行布局。
    • FrameLayout: 所有组件放在左上角,一个覆盖一个。
    • TableLayout: 表格布局,每行一个 TableRow,可以增加组件。
    • RelativeLayout: 相对布局,根据组件或父容器位置确定组件位置。
  11. Android 应用打包:
    Android 应用使用 Java 语言编写,通过 aapt 工具把编译好的代码和资源文件打包成 .apk 文件,该文件是发布和安装应用的媒介。

  12. Android 体系结构:
    分为四层:应用层、应用框架层、系统运行层、Linux 内核层。

  13. Dalvik 虚拟机:
    每个 Android 应用在自己的进程中运行,拥有独立的 Dalvik 虚拟机实例,执行 .dex 格式文件。虚拟机基于寄存器设计,可以高效运行多个虚拟系统。

  14. Activity 生命周期:

    • Resumed: 前台运行,可交互(也称 "running" 状态)。
    • Paused: 部分遮蔽,不可交互。
    • Stopped: 完全隐藏,不可见。实例和状态信息保留,但不能执行代码。
  15. Activity 之间传递数据:

    • Intent: 将数据封装在 Intent 变量中,传递对象时需序列化。
    • 剪切板: 使用系统剪切板传递数据。
    • 全局变量: 通过全局对象传递数据。
    • 静态变量: 使用静态属性传递数据。
  16. 从 Activity 返回数据:

    • startActivity(): 启动意图。
    • startActivityForResult(): 启动意图并获取返回结果,需实现 onActivityResult 方法。
  17. 结束 Activity 生命周期:
    finish() 方法用来结束 Activity 的生命周期。

二、实现 DEMO

  1. 利用 Intent 在两个 Activity 之间传递数据:

    调用者 Main.java:

    java
    public class Main extends Activity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Main.this, OtherActivity.class); intent.putExtra("name", "张三"); intent.putExtra("age", 123); intent.putExtra("address", "北京"); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }

    被调用者 OtherActivity.java:

    java
    public class OtherActivity extends Activity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.other); textView = findViewById(R.id.msg); Intent intent = getIntent(); int age = intent.getIntExtra("age", 0); String name = intent.getStringExtra("name"); String address = intent.getStringExtra("address"); textView.setText("age -->>" + age + "\nname -->>" + name + "\naddress -->>" + address); } }

    主 Activity 的布局文件 main.xml:

    xml
    <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="测试 Intent 传递数据" />

    被调用者的布局文件 other.xml:

    xml
    <TextView android:id="@+id/msg" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

    在 Manifest 中配置 Activity:

    xml
    <activity android:name=".Main" /> <activity android:name=".OtherActivity" />

android

这是视图的唯一标识符,可以在程序代码中通过该标识符引用对象。引用资源对象时需使用 @ 符号,紧随 @ 之后的是资源类型(如 id),然后是资源名称(如 button/msg)。+ 号用于第一次定义资源 ID。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!