一个Activity的显示过程总结(一)

最近读了深入理解Android卷I,了解了一些有关于Activity显示的知识,在此写下一篇博客总结。

有兴趣自己看Android源码的同学可以前往:http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/

本博客分析的Android版本为4.4


Activity的创建

要谈到Activity的界面显示,我们就得从Activity的创建说起。
众所周知,Zygote是我们Android系统与应用启动相关的一个非常重要的进程:当我们要启动一个新的APP进程的时候,Zygote进程就会通过fork创建一个子进程,而子进程的入口函数就是ActivityThread类的main函数:
public static void main(String[] args) {
        ...

        Looper.prepareMainLooper();

        ActivityThread thread = new ActivityThread();
        thread.attach(false);

        if (sMainThreadHandler == null) {
            sMainThreadHandler = thread.getHandler();
        }

        AsyncTask.init();

        if (false) {
            Looper.myLooper().setMessageLogging(new
                    LogPrinter(Log.DEBUG, "ActivityThread"));
        }

        Looper.loop();

        throw new RuntimeException("Main thread loop unexpectedly exited");
    }

省略一些无关的代码,我们可以看到在main函数中ActivityThread进行了一些与Looper、Handler相关的初始化操作,初始化完成后就能使用handler来处理message了,我们来看一下能处理什么消息(ActivityThread类的handleMessage函数):
public void handleMessage(Message msg) {
            if (DEBUG_MESSAGES) Slog.v(TAG, ">>> handling: " + codeToString(msg.what));
            switch (msg.what) {
                case LAUNCH_ACTIVITY: {
                    Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityStart");
                    ActivityClientRecord r = (ActivityClientRecord)msg.obj;

                    r.packageInfo = getPackageInfoNoCheck(
                            r.activityInfo.applicationInfo, r.compatInfo);
                    handleLaunchActivity(r, null);
                    Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
                } break;
                ...
            }
        
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 为了写一个学生社团管理系统,你需要: 1. 先了解Java的基本语法和常用的API。 2. 设计系统的数据结构,比如学生、社团、活动、会议等的信息。 3. 编写Java代码来实现各种功能,比如: - 添加、修改和删除学生、社团、活动和会议的信息 - 查询学生、社团、活动和会议的信息 - 对学生、社团、活动和会议进行排序和搜索 - 对学生、社团、活动和会议进行统计和分析 4. 使用Java的图形用户界面(GUI)API(比如Swing或JavaFX)来为系统创建友好的界面。 这些步骤可能会很复杂,但是通过努力学习和实践,你一定可以写出一个优秀的学生社团管理系统。 ### 回答2: 学生社团管理系统是一个用来管理学生社团活动和成员信息的系统。使用Java编写这样一个系统需要遵循一定的步骤和流程。 首先,需要定义系统的基本需求和功能。例如,注册新社团、添加或删除成员、发布社团活动、查看社团成员信息等。 接下来,可以设计系统的基本架构。可以采用面向对象的方式来设计,将学生、社团、活动等作为对象来进行处理。可以定义一些关键的类,如Student、Club、Activity等。 然后,需要设计系统的数据库结构。可以使用关系型数据库或者面向对象数据库来存储数据。可以创建学生表、社团表、活动表等,并建立它们之间的关联关系。 接着,开始编写Java代码实现系统的各个功能。可以使用Java的面向对象编程特性,如封装、继承和多态来设计和实现各个类。可以使用Java的数据库连接技术,如JDBC来连接数据库并进行数据的增删改查操作。 在编写代码的过程中,可以使用一些流行的Java开发框架,如Spring、Hibernate等来提高开发效率和代码质量。 最后,需要进行系统的测试和调试。可以编写一些单元测试来验证系统的各个功能是否正常运行,以及处理一些潜在的错误和异常情况。 总之,编写一个学生社团管理系统需要进行需求分析、系统设计、数据库设计和编码等一系列的工作。通过合理的设计和代码实现,可以实现一个功能完善、健壮性强的系统。 ### 回答3: 要用Java编写一个学生社团管理系统,可以按以下步骤进行: 1. 设计数据库:首先,需要设计一个数据库来存储学生、社团和活动等信息。可以创建三个表:学生表、社团表和活动表。学生表中包含学生的姓名、学号、性别等信息;社团表中包含社团的名称、成立时间、负责人等信息;活动表中包含活动的名称、时间、地点等信息。每个表都要设定适当的主键和外键来关联它们。 2. 创建Java类:根据数据库设计,创建对应的Java类来表示学生、社团和活动。每个类应该有适当的属性和方法来操作和访问数据库中的相关数据。 3. 连接数据库:使用Java提供的JDBC(Java Database Connectivity)库来连接数据库。这可以通过配置数据库连接信息,包括数据库的URL、用户名和密码等来实现。然后,使用JDBC库中提供的API来执行SQL语句,如查询学生、社团或活动的信息。 4. 实现功能:根据具体需求,编写代码实现学生社团管理系统的功能,例如添加学生、删除学生、查询社团信息、添加活动等。可以使用面向对象的编程思想,通过调用相应的类方法来实现。 5. 用户界面:为了方便用户操作,可以通过Java的图形用户界面(GUI)库,如Swing或JavaFX,创建一个用户界面,以便用户可以更直观地执行相应的操作。通过按钮、文本框、列表等组件,让用户输入或选择相应信息,并将其传递给相应的类进行处理。 6. 错误处理和异常处理:在编写代码时,要注意错误处理和异常处理。例如,在用户输入无效数据时,可以显示相应的错误消息;在数据库连接失败时,需要捕获异常并给出适当的提示。 总结起来,通过设计数据库、创建Java类、连接数据库、实现功能、添加用户界面以及进行错误和异常处理,就可以使用Java编写一个学生社团管理系统。这样的系统可以帮助学生、社团和活动进行管理,提高管理效率和便捷性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值