要当程序员要学什么:为什么要扩展Android应用程序类

关于要当程序员要学什么的问题,在android create application class中经常遇到, 扩展的Application类可以声明全局变量。还有其他原因吗?

扩展的Application类可以声明全局变量。还有其他原因吗?

140

Introduction:

enter image description here

如果我们考虑移动设备中的apk文件,则它由多个有用的块组成,例如Activitys,Services 等。

这些组件不会定期相互通信,也不会忘记它们有自己的生命周期。这表明它们可能在某个时间处于活动状态,而在另一个时刻处于非活动状态。

Requirements:

有时我们可能需要一个场景,我们需要在整个Application中访问一个变量及其状态,而不管用户正在使用的Activity

一个例子是,用户可能需要访问一个变量,该变量包含他的人员信息(例如姓名),该信息必须通过Application进行访问,

我们可以使用 SQLite,但创建一个Cursor并一次又一次地关闭它对性能不好,

我们可以使用Intent来传递数据,但它很笨拙,活动本身可能不存在于某些情况下,具体取决于内存可用性。

应用程序类的用途:

Application访问变量,

您可以使用Application来启动某些东西,如分析等,因为应用程序类是在Activitys 或Servicess 运行之前启动的,

有一个名为 onConfigurationChanged()的重写方法,当应用程序配置更改时触发(水平到垂直,反之亦然),

还有一个名为 onLowMemory()的事件,当 Android 设备内存不足时触发。

67

应用程序类是具有应用程序完整生命周期的对象。它是应用程序的最高层。示例可能的用法:

您可以通过在 Application 类中重写 onCreate 来添加应用程序启动时所需的内容。

存储从 Activity 跳转到 Activity 的全局变量。像 Asynctask

35

有时你想存储数据,比如需要从多个 Activities 访问的全局变量-有时在应用程序中的任何地方。

例如,如果要获取每个http请求的基本身份验证数据,则可以在应用程序对象中实现身份验证数据的方法。

在此之后,您可以在任何这样的活动中获取用户名和密码:

MyApplication mApplication = (MyApplication)getApplicationContext();
String username = mApplication.getUsername();
String password = mApplication.getPassword();

最后,请记住将 Application 对象用作单例对象:

public class MyApplication extends Application {
    private static MyApplication singleton;
    public MyApplication getInstance(){
        return singleton;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        singleton = this;
    }
}

欲了解更多信息,请点击Application Class

33

顺便说一句,我想不出一个真实的场景,在这个场景中,扩展 Application 要么比另一种方法更可取,要么是完成某件事所必需的。如果你有一个昂贵的、经常使用的对象,当你检测到该对象当前不存在时,你可以在 IntentService 中初始化它。应用程序本身在 UI 线程上运行,而 IntentService 在它自己的线程上运行。

我更喜欢将数据从 Activity 传递到具有明确意图的 Activity,或者使用 SharedPreferences。还有一些方法可以使用接口将数据从 Fragment 传递到其父 Activity。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(832)
Yl mf:DAL-yl未定义(yl is)
上一篇
编程用的笔记本电脑:编程实践:笔记本电脑价格表问题
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(35条)