`
bbwang8088
  • 浏览: 46042 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在多个Activity之间共享变量

 
阅读更多

      话说以前做的一个纯Java引擎准备移植到Android上面,前期已做过Demo,看起来一切都没有什么问题。不过,现在真正移植问题就来了。

      第一个问题就是,以前的Demo只是一个画面,引擎初期化是放在Activity的onCreate方法里面,这样做当然没有什么问题啦。现在画面增加到10来个,这个引擎如何为各个Activity公用成为了一个问题。

      对Android不熟悉,也只算是边学边做,所以有了下面的想法:

      1、用Service

      2、用Thread

      3、用Application

 

     现在用了第3种方法成功了。

    第1、2中方法我想本质上都是启动一个独立于Activity的线程,但是无法和Activity挂上关系。所以肯定是NullPointException啦。

 

    具体做法:

    很简单,引擎(或者某个普通的类)需要初始化,而且在应用程序不被销毁之前报保证被各个Activity可用。

    1、自定义一个类MyApplication来继承Application,在这个类中的onCreate方法里面初始化引擎。

    2、为了在各个Activity类中可以调用引擎,需要在1的自定义类中写一个getEngine的方法。

 

    class MyApplication extends Application {  
      
      private Engine engine;  
      
      public Engine getEngine(){  
        return engine;  
      }  
      public void onCreate(){
        engine = new Engine();
        engine.init();
     }
    }
 

    3、在Activity中通过获取引擎对象,并调用getEngine

MyApplication app = ((MyApplication)this.getApplicationContext());  
Engine engine = app.getEngine();  

    4、在AndroidMainfest.xml文件中将Application节点的Android:name改成我们自定义的类。

 

以上

 

分享到:
评论

相关推荐

    Android开发错误记录

    要在多个Activity之间共享变量,可以使用`Application`的`SharedPreferences`或创建一个公共的静态类。另一种方法是通过`Intent`传递数据。在示例中,推荐使用`Application Context`来创建全局变量。 7. **调整...

    Android Activity间共享数据

    这种方法适用于需要跨多个Activity访问的数据,但需谨慎处理,避免内存泄漏。 5. **文件存储**:将数据写入文件或SharedPreferences,然后在需要时读取。适用于大量数据或非临时性数据的传递。 6. **ContentProvider...

    android不同activity之间共享数据解决方法

    这里主要讨论的是如何在多个Activity间共享一个持久化的状态,比如一个socket连接,这在处理网络通信时尤为常见。传统的Intent传递数据虽然简单,但对于频繁使用的共享状态可能会显得效率较低。本文将介绍一种更有效...

    Fragment与Activity 之间的数据传输

    - **使用静态方法或成员变量**:在同一个Activity内的Fragment间,可以直接通过静态方法或共享成员变量进行数据交换,但这种方式不利于代码的维护和扩展。 **4. Fragment的切换** Fragment的切换通常通过...

    android 实例 Activity 之间通过 Handler 通信

    4. 如果需要在多个Activity间共享数据,考虑使用Application对象或静态变量,但需谨慎处理内存泄漏。 总结,Handler机制为Android应用提供了一种灵活的跨线程、跨组件通信方式。在Activity之间,通过Handler可以...

    Activity之间的切换

    在"MultiActivity"这个项目中,可能包含了多个Activity以及它们之间的数据传递示例,可能涉及到上述的一些或所有方法。理解并熟练掌握这些技巧对于构建功能丰富的Android应用至关重要。同时,注意在传递数据时要处理...

    Activity之间UI的另类\"更新\"

    这篇博客可能会介绍一些不常见的或者高效的方法来实现在多个Activity间更新UI,比如使用事件总线(Event Bus)、LiveData、ViewModel等现代架构组件。 1. **事件总线(Event Bus)**:这是一种设计模式,用于解决...

    Android Activity之间的跳转以及数据的交互传递

    文件存储是一种持久化数据的方法,适用于需要在多个Activity间长期保存的数据。你可以使用File、SharedPreferences或XML文件来存储数据。ContentProvider则提供了一种统一的方式来访问应用间的数据,适合大量数据的...

    Android Activity之间的跳转以及传递参数源代码下载

    当数据量较大或者需要在多个Activity之间共享时,可以考虑使用Parcelable接口或Serializable接口来实现对象的序列化,然后通过Intent传递。 关于Parcelable接口,它提供了比Serializable更高的序列化性能,适用于...

    Android编程实现两个Activity之间共享数据及互相访问的方法

    - **并发问题**:如果多个Activity同时访问静态成员,可能会遇到并发控制问题,需要额外的同步措施来避免数据冲突。 - **安全性和隐私**:不建议在非信任的组件之间直接共享敏感数据,因为静态变量可能会被恶意代码...

    activity传值

    当需要在多个Activity之间共享数据且数据量较大时,可以使用静态成员变量或者自定义Application类。但这种方式需谨慎使用,因为可能导致内存泄漏。 4. **文件、数据库或SharedPreferences** 对于大量或持久性的...

    Android-Activity之间数据传递的多种方式

    如果数据需要在多个Activity间持久保存,可以考虑使用静态成员变量或单例模式。这种方式简单直接,但需要注意线程安全和内存泄漏问题。 四、文件存储和ContentProvider 对于大容量或需要跨应用共享的数据,可以...

    android实现activity直接的传值问题

    如果数据量较大或者需要在多个Activity间持久共享,可以使用静态成员变量或单例模式。但这种方法存在风险,如内存泄漏和数据一致性问题,因此应谨慎使用。 四、Parcelable接口 对于复杂对象的传递,如自定义类实例...

    android activity跳转 Application Context实现共享数据

    当我们需要在多个Activity之间传递数据时,通常会使用Intent对象,而通过Application Context则可以实现全局的数据共享。下面将详细探讨这些知识点。 一、Activity跳转 Activity之间的跳转是Android应用中最常见的...

    android Activity之间的数据传递

    2. **单实例模式(SingleInstance)**:在整个任务栈中只有一个Activity实例,所有启动它的Intent都会被发送到这个实例。在这种模式下,数据传递依然通过Intent,但需注意多Intent间的数据共享。 3. **单任务模式...

    Activity之间的相互调用与传递参数

    7. **ViewModel**: Android架构组件提供的ViewModel类,可以在配置变更(如屏幕旋转)时保留数据,避免了数据丢失,也可以在多个Fragment或Activity之间共享数据。 了解了这些方法后,开发者可以根据具体需求选择...

    Android fragment和activity实现相互通信demo

    2. **Fragment**: 是Activity的一部分,可以在同一个Activity中嵌套多个Fragment,也可以在多个Activity之间复用。Fragment有自己的生命周期,但受其所在Activity的生命周期影响。 **Fragment与Activity通信的主要...

    两线程之间的关系 activity

    - 启动多个工作线程并观察Activity是否还能正常响应用户操作。 - 模拟网络延迟,测试异步任务完成后的UI更新是否正确。 - 检查在不同生命周期状态下,工作线程的管理是否得当,是否存在内存泄漏。 6. 性能优化:...

    Android例子源码Activity间的数据传递

    8. **事件总线**:对于更复杂的场景,如多个Activity或Fragment间的数据同步,可以考虑使用事件总线库,如EventBus或RxBus,它们允许组件间松耦合的通信。 9. **数据库和SharedPreferences**: 如果数据量大或者需要...

Global site tag (gtag.js) - Google Analytics