GDPU移动应用开发(安卓)期末考试复习资料


第一部分

一、选择题
  1. 应用的基本构建块是:
    A. Activity
    B. Fragment
    C. Service
    D. Intent

    答案: A. Activity

  2. 下列哪个不是AndroidManifest.xml文件的主要用途?
    A. 声明应用权限
    B. 声明应用组件
    C. 定义应用的图标和名称
    D. 编写应用的业务逻辑

    答案: D. 编写应用的业务逻辑

  3. 在Android中、用于存储持久化数据的SQLite数据库、默认存储在哪个目录下?
    A. /sdcard/
    B. /data/data/包名/databases/
    C. /res/
    D. /system/

    答案: B. /data/data/包名/databases/

  4. Android中、用于实现页面间跳转和传递数据的主要机制是:
    A. SharedPreferences
    B. Intent
    C. Bundle
    D. FragmentManager

    答案: B. Intent

  5. 在Android Studio中、用于编写和测试布局文件的环境是:
    A. Logcat
    B. Layout Editor
    C. Gradle
    D. AVD Manager

    答案: B. Layout Editor

  6. 哪个类用于处理用户的触摸事件、如点击、长按等?
    A. View
    B. Activity
    C. Fragment
    D. IntentFilter

    答案: A. View

  7. Android应用中、使用哪种方式可以实现后台任务处理?
    A. AsyncTask
    B. Service
    C. BroadcastReceiver
    D. IntentService

    答案: B. Service (AsyncTask 和 IntentService 也是、但 Service 是更概括的选项)

  8. 如果你想在Android应用中显示一个Toast消息、你应该使用哪个类的实例?
    A. Toast
    B. AlertDialog
    C. Dialog
    D. Snackbar

    答案: A. Toast

  9. Android中的Context是一个抽象类、它允许访问特定资源和类以及调用应用级操作、如启动活动、广播和接收意图等。在Activity中、可以通过哪个方法直接获取Context?
    A. getApplicationContext()
    B. getContext()
    C. this(在Activity内部)
    D. getBaseContext()

    答案: C. this(在Activity内部)

  10. 在Android开发中、用于处理用户输入的EditText组件、其输入类型设置为密码时、应使用哪个属性?
    A. android:inputType=“textPassword”
    B. android:password=“true”
    C. android:inputType=“password”
    D. android:secure=“true”

    答案: A. android:inputType=“textPassword”

二、判断题
  1. Android应用程序的四大组件是:Activity、BroadcastReceiver 、Service和ContentProvider。

    正确

  2. 在Android中、使用 BroadcastReceiver 来监听和发送广播消息。

    正确

  3. AndroidStudio中、用于构建和同步Gradle配置的按钮是Sync Project with Gradle Files 。

    正确

  4. 要在Android中创建一个新的线程、可以使用Java的Thread类。

    正确

  5. 在AndroidManifest.xml中、为应用声明网络权限的标签是

    正确

  6. 使用 LinearLayout 布局管理器、可以让子视图水平或垂直排列、并且每个子视图占据等量的空间。

    错误 (需要设置 android:layout_weight 属性来实现等量空间占据)

  7. Android中的资源文件通常放在项目的 res 目录下。

    正确

  8. 在Android中、使用 startActivity(Intent intent)方法可以启动一个新的Activity。

    正确

  9. SharedPreferences是Android平台上一个轻量级的存储类、主要保存和读取的数据类型是 intString

    错误 (除了 int 和 String,还支持 boolean、float、long、StringSet 等)

  10. 在Fragment中、当Fragment可见且用户与其交互时、Fragment会接收到 onResume()回调。

    正确

三、简答题
  1. 简述Activity的生命周期、并说明至少三个重要的生命周期方法。
    Activity的生命周期指Activity从被创建到销毁的整个过程中,会经历一系列的状态变化。重要的生命周期方法包括:

    • onCreate():Activity被创建时调用,用于初始化设置。
    • onStart():Activity对用户可见时调用。
    • onResume():Activity开始与用户交互时调用。
    • onPause():Activity被其他Activity部分遮挡时调用。
    • onStop():Activity完全不可见时调用。
    • onDestroy():Activity被销毁时调用,通常用于清理资源。
  2. 解释Intent在Android应用中的作用、并给出一个使用Intent启动新Activity的例子。
    Intent是Android应用间交互的一种主要方式、它用于不同组件之间的通信、如启动Activity、发送广播、启动服务等。

    • 使用Intent启动新Activity的例子:
      Intent intent = new Intent(this, NewActivity.class);
      startActivity(intent);
      
  3. 简述Android中Fragment的作用及其与Activity的区别。

    • Fragment:Fragment是Activity中的一个片段、可以在一个Activity中嵌入多个Fragment、实现复杂的用户界面和逻辑。Fragment有自己的生命周期、但依赖于Activity存在。
    • 与Activity的区别:Activity是一个完整的屏幕、可以独立存在;而Fragment必须嵌入到Activity中、不能独立存在。
    •   Fragment适用于在不同屏幕尺寸上创建灵活的UI设计、提高代码复用性。
      
四、编程题
  1. 编写一个简单的Activity、其中包含一个EditText用于输入文本、一个Button用于提交文本、以及一个TextView用于显示提交的文本。要求:当点击Button时、将EditText中的文本内容显示到TextView上。

    class MainActivity : AppCompatActivity() {
    
        lateinit var editText: EditText
        lateinit var button: Button
        lateinit var textView: TextView
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            editText = findViewById(R.id.editText)
            button = findViewById(R.id.button)
            textView = findViewById(R.id.textView)
    
            button.setOnClickListener {
                val text = editText.text.toString()
                textView.text = text
            }
        }
    }
    

第二部分

一、选择题
  1. 用于在后台执行长时间运行操作且没有用户界面的组件是?
    A. Activity
    B. Service
    C. Intent
    D. ContentProvider

    答案: B. Service

  2. Android中用于存储轻量级、简单数据的机制是?
    A. SQLite
    B. SharedPreferences
    C. File
    D. Intent

    答案: B. SharedPreferences

  3. 在Android中、用于接收系统或应用广播的组件是?
    A. Activity
    B. Service
    C. BroadcastReceiver
    D. ContentProvider

    答案: C. BroadcastReceiver

  4. 哪个生命周期方法会在Activity对用户可见时调用?
    A. onStart()
    B. onResume()
    C. onPause()
    D. onStop()

    答案: A. onStart()

  5. 哪个方法用于在Activity中处理从另一个Activity返回的结果?
    A. onActivityResult()
    B. onCreate()
    C. onStart()
    D. onNewIntent()

    答案: A. onActivityResult()

  6. 在Android中、用于控制组件间通信的类是?
    A. Bundle
    B. Intent
    C. IntentFilter
    D. PendingIntent

    答案: B. Intent

二、判断题
  1. SharedPreferences是Android中用于实现数据持久化的一种轻量级机制

    正确

  2. Android中,用于实现跨进程通信的组件是ContentProvider。

    正确

  3. Intent用于在不同组件之间传递数据。

    正确

  4. Android应用的主线程也被称为UI线程。

    正确

  5. 在Android中,用于启动服务的Intent方法通常是startService()

    正确

三、简答题
  1. 简述Android应用的四大组件及其主要功能:

    • Activity:用于展示用户界面、与用户进行交互。
    • Service:在后台执行长时间运行的操作、没有用户界面。
    • BroadcastReceiver:用于接收系统或应用发出的广播、并做出响应。
    • ContentProvider:实现跨应用共享数据、提供数据访问的接口。
  2. 描述Activity的生命周期,并解释每个关键阶段的作用:

    • onCreate():Activity被创建时调用、用于初始化设置。
    • onStart():Activity对用户可见时调用。
    • onResume():Activity开始与用户交互时调用。
    • onPause():Activity不再与用户交互,但可能仍然可见时调用。
    • onStop():Activity不再可见时调用。
    • onDestroy():Activity被销毁前调用,用于清理资源。
  3. 什么是Intent?它在Android中有什么作用?
    Intent是Android中用于组件间通信的一种机制、它可以启动组件(如Activity、Service等)、也可以在不同组件之间传递数据。Intent描述了应用想要执行的操作、包括操作的动作、数据、附加数据、类别、组件名称等。

  4. 简述SharedPreferences与SQLite数据库的区别及适用场景:

    • SharedPreferences:轻量级的数据存储方式、适合存储简单的键值对数据、如用户偏好设置。它易于使用、但不适合存储大量数据或复杂数据。
    • SQLite数据库:是一个完整的数据库系统、支持SQL语句,适合存储大量或复杂的数据,如用户信息、应用数据等。它提供了更高的灵活性和查询能力、但相对于SharedPreferences来说,使用上更为复杂。
四、编程题
  1. 编写一个Activity,其中包含一个按钮。点击按钮后、启动另一个Activity、并在第二个Activity中显示"Hello, Android!"的文本信息。

    • 第一个Activity (MainActivity.java)

      class MainActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_main)
      
              val button: Button = findViewById(R.id.myButton)
              button.setOnClickListener {
                  val intent = Intent(this@MainActivity, SecondActivity::class.java)
                  startActivity(intent)
              }
          }
      }
      
    • 第二个Activity (SecondActivity.java)

      class SecondActivity : AppCompatActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_second)
      
              val textView: TextView = findViewById(R.id.textView)
              textView.text = "Hello, Android!"
          }
      }
      
  2. 创建一个简单的Android应用、该应用包含一个EditText和一个Button。用户可以在EditText中输入文本、点击Button后、应用会在Toast中显示用户输入的文本。请提供关键代码片段(包括布局文件和Activity代码)。

    • 布局文件 (activity_main.xml)

      
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical"
          android:padding="16dp">
      
          
          <EditText
              android:id="@+id/editText"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="请输入文本"
              android:inputType="text" />
      
          
          <Button
              android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="显示文本" />
      LinearLayout>
      
    • Activity代码 (MainActivity.java)

      public class MainActivity extends AppCompatActivity {
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              // 获取 EditText 和 Button 的引用
              EditText editText = findViewById(R.id.editText);
              Button button = findViewById(R.id.button);
      
              // 设置按钮的点击事件
              button.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      // 获取 EditText 中的文本
                      String inputText = editText.getText().toString();
      
                      // 显示 Toast 提示框,展示用户输入的文本
                      Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();
                  }
              });
          }
      }
      

第三部分

一、选择题
  1. 在Android中、用于声明应用程序组件(如Activity、Service等)的配置文件是?
    A. AndroidManifest.xml
    B. build.gradle
    C. styles.xml
    D. res/layout/activity_main.xml

    答案: A. AndroidManifest.xml

  2. 哪个类用于在Android应用中处理用户界面的更新、但不直接处理用户的输入?
    A. Activity
    B. Service
    C. AsyncTask
    D. Handler

    答案: D. Handler

  3. 在Android中、用于在界面上显示文本信息的控件是?
    A. TextView
    B. EditText
    C. ImageView
    D. Button

    答案: A. TextView

  4. AndroidStudio中、用于模拟Android设备以测试应用的工具是?
    A. Android Debugger
    B. Android Virtual Device (AVD)
    C. Layout Inspector
    D. Logcat

    答案: B. Android Virtual Device (AVD)

  5. 下列哪项是Android四大组件之一,但不具备用户界面?
    A. Activity
    B. Service
    C. Broadcast Receiver
    D. Content Provider

    答案: B, C, D (Service, BroadcastReceiver, ContentProvider 都不具备用户界面)

  6. 在Android中,用于存储简单数据的轻量级数据库是?
    A. SQLite
    B. MySQL
    C. Realm
    D. Firebase Realtime Database

    答案: A. SQLite (虽然 SharedPreferences 更轻量、但题目问的是“数据库”)

  7. 要在Android应用中访问网络、通常需要添加哪个权限到AndroidManifest.xml?
    A.
    B.
    C.
    D.

    答案: A

  8. Android中的Intent主要用于什么?
    A. 跨进程通信
    B. 线程间通信
    C. 组件间通信
    D. 跨应用数据传输

    答案: C. 组件间通信 (A和D也是其能力,但C是其最核心和主要的作用)

  9. 关于Android Activity生命周期、以下哪个状态表示Activity正在前台,用户可以与其交互?
    A. Started
    B. Resumed
    C. Paused
    D. Stopped

    答案: B. Resumed

  10. 在Android开发中、适配器(Adapter)的主要作用是什么?
    A. 用于在Activity和Fragment之间传递数据
    B. 用于将数据源(如List)绑定到UI组件(如ListView或RecyclerView)
    C. 用于处理网络请求
    D. 用于创建和管理线程

    答案: B

二、判断题
  1. Android应用的入口点是MainActivity类。

    错误 (入口点由AndroidManifest.xml中带有LAUNCHER intent-filter的Activity决定,不一定是MainActivity)

  2. AndroidStudio中、用于编写和测试Android应用的集成开发环境(IDE)是Android Studio。

    正确

  3. SQLite数据库中、用于创建表的SQL语句以CREATE TABLE关键字开始。

    正确

  4. 在AndroidManifest.xml中、用于声明应用所需权限的标签是

    正确

  5. Intent传递数据时、可以使用putExtra方法,并通过getIntent().getExtras().get...方法在接收端获取这些数据。

    正确

  6. 在RecyclerView中、用于定义列表项布局的XML文件通常放在res/layout目录下。

    正确

  7. 在Android中、用于在后台执行长时间运行的操作而不影响用户界面的组件是Service。

    正确

三、简答题
  1. 如何在Android应用中处理网络请求并显示结果:
    通常使用异步方式进行网络请求(如使用协程、RxJava或AsyncTask)、避免阻塞UI线程。请求成功获取数据后、切换回主线程中更新UI、将结果显示在对应的控件上。

  2. 简述Intent的作用及两种主要类型:
    Intent是Android中用于不同组件之间通信的一种机制:可以启动Activity、Service或发送广播。两种主要类型:

    • 显式Intent:明确指定目标组件的类名的Intent。
    • 隐式Intent:不指定具体组件、而是通过Action、Category、Data等属性由系统查找最合适的组件来响应。
  3. 描述如何在Android应用中使用SharedPreferences来存储和检索数据:
    SharedPreferences用于存储轻量级的键值对数据。通过 getSharedPreferences() 获取SharedPreferences实例、然后使用.edit()获取Editor对象,通过put...()方法存储数据、最后调用.apply().commit()提交。通过SharedPreferences实例的get...()方法可以直接检索数据。

四、编程题
  1. 编写一个Android Activity、其中包含一个EditText用于输入用户名和一个Button。点击按钮后、将EditText中输入的用户名通过Toast显示出来。

    public class MainActivity extends AppCompatActivity {
        EditText editText;
        Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            editText = findViewById(R.id.editText);
            button = findViewById(R.id.button);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String username = editText.getText().toString();
                    Toast.makeText(MainActivity.this, "用户名:" + username, Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    
  2. 设计一个使用RecyclerView的简单列表界面、列表项显示从网络API获取的数据(如新闻标题)。假设API返回JSON数据、你需要解析这些数据并显示在RecyclerView中。请简要描述实现步骤、并给出关键代码片段(如Adapter的创建和数据绑定逻辑)。

    • 实现步骤:

      1. 创建RecyclerView的布局(activity_main.xml)和列表项的布局(news_item.xml)。
      2. 创建一个数据模型类 (如 NewsItem) 来表示列表中的每一项。
      3. 创建一个继承自 RecyclerView.Adapter 的自定义Adapter类。
      4. 在Adapter中,创建 ViewHolder 来持有列表项的视图。
      5. onCreateViewHolder 中加载列表项布局,在 onBindViewHolder 中将数据绑定到视图。
      6. 在Activity或Fragment中,初始化RecyclerView,设置LayoutManager和Adapter。
      7. 发起网络请求(例如使用Retrofit),解析返回的JSON数据、将数据列表传递给Adapter、并调用 notifyDataSetChanged()刷新列表。
    • 关键代码 (Adapter):

      public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
          private List<NewsItem> newsList;
      
          // 构造函数
          public NewsAdapter(List<NewsItem> newsList) {
              this.newsList = newsList;
          }
      
          @NonNull
          @Override
          public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
              View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item, parent, false);
              return new ViewHolder(view);
          }
      
          @Override
          public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
              NewsItem newsItem = newsList.get(position);
              holder.title.setText(newsItem.getTitle());
          }
      
          @Override
          public int getItemCount() {
              return newsList.size();
          }
      
          // ViewHolder类
          public static class ViewHolder extends RecyclerView.ViewHolder {
              TextView title;
              public ViewHolder(@NonNull View itemView) {
                  super(itemView);
                  title = itemView.findViewById(R.id.news_title);
              }
          }
      }
      
五、编程题
  1. 请完成一个用户登录界面MainActivity、界面xml文件为activity_main.xml、界面中必须包含TextView控件、EditText控件以及Button控件、当点击Button按钮时、会弹出Toast对话框显示用户名和密码。

    • MainActivity.java
      public class MainActivity extends AppCompatActivity {
          private EditText etUserName;
          private EditText etPassword;
          private Button btnLogin;
      
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
      
              // 初始化控件
              etUserName = findViewById(R.id.etUserName);
              etPassword = findViewById(R.id.etPwd); // 注意ID匹配
              btnLogin = findViewById(R.id.btnLogin);
      
              btnLogin.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      String username = etUserName.getText().toString();
                      String password = etPassword.getText().toString();
      
                      Toast.makeText(MainActivity.this,
                              "用户名:" + username + "\n密码:" + password,
                              Toast.LENGTH_SHORT).show(); // Toast提示信息
                  }
              });
          }
      }
      
  2. 请编写一个短信草稿箱的程序、要求用户在文本编辑框中输入短信内容后、点击保存短信按钮、将短信保存在SharedPreferences中。

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        /**
         * 短信文本输入框
         */
        private EditText mWrite;
        /**
         * 短信读取框
         */
        private EditText mRead;
        /**
         * 存储信息按钮
         */
        private Button mSaveBTN;
        /**
         * 读取已存信息按钮
         */
        private Button mReadBTN;
        private SharedPreferences mSP;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            /**
             * 获取SharedPreferences实例对象
             */
            mSP = getSharedPreferences("data", Context.MODE_PRIVATE);
    
            mWrite = findViewById(R.id.et_write);
            mRead = findViewById(R.id.et_read);
            mSaveBTN = findViewById(R.id.btn_save);
            mReadBTN = findViewById(R.id.btn_read);
    
            /**
             * 两个按钮设置单击监听
             */
            mSaveBTN.setOnClickListener(this);
            mReadBTN.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_read:
                    getSms(); // 调用获取信息的方法
                    break;
                case R.id.btn_save:
                    saveSms(); // 调用保存信息的方法
                    break;
            }
        }
    
        /**
         * 保存信息
         */
        private void saveSms() {
            if (!TextUtils.isEmpty(mWrite.getText().toString().trim())) {
                SharedPreferences.Editor edit = mSP.edit(); // 获取编辑器
                edit.putString("sms", mWrite.getText().toString().trim()); // 保存数据
                edit.commit(); // 提交数据
                Toast.makeText(MainActivity.this, "信息存储成功", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(MainActivity.this, "短信内容不能为空!!!", Toast.LENGTH_SHORT).show();
            }
        }
    
        /**
         * 读取信息
         */
        private void getSms() {
            String sms = mSP.getString("sms", null); // 获得数据
            if (sms != null) {
                mRead.setText(sms); // 数据显示在短信读取框中
            } else {
                Toast.makeText(MainActivity.this, "请先保存信息", Toast.LENGTH_SHORT).show();
            }
        }
    }
    

GDPU移动应用开发(安卓)期末考试复习资料_第1张图片

你可能感兴趣的:(GDPU移动应用开发(安卓)期末考试复习资料)