当前位置: 首页 > 知识库问答 >
问题:

Android中的单例

汪弘盛
2023-03-14

我已经按照这个链接,并成功地在Android中制作了单例类。http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

问题是我想要一个单一的对象。与活动A和活动B类似,在活动A中,我从Singleton访问对象。我使用该对象并对其进行了一些更改。

public class MainActivity extends Activity {
    protected MyApplication app;        
    private OnClickListener btn2=new OnClickListener() {    
        @Override
        public void onClick(View arg0) {
            Intent intent=new Intent(MainActivity.this,NextActivity.class);
            startActivity(intent);              
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Get the application instance
        app = (MyApplication)getApplication();

        // Call a custom application method
        app.customAppMethod();

        // Call a custom method in MySingleton
        Singleton.getInstance().customSingletonMethod();

        Singleton.getInstance();
        // Read the value of a variable in MySingleton
        String singletonVar = Singleton.customVar;

        Log.d("Test",singletonVar);
        singletonVar="World";
        Log.d("Test",singletonVar);

        Button btn=(Button)findViewById(R.id.button1);
        btn.setOnClickListener(btn2);
    }

}
public class NextActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_next);

            String singletonVar = Singleton.customVar;

            Log.d("Test",singletonVar);
        }
  }
public class Singleton
{
    private static Singleton instance;

    public static String customVar="Hello";

    public static void initInstance()
    {
    if (instance == null)
    {
      // Create the instance
      instance = new Singleton();
    }
    }

    public static Singleton getInstance()
    {
     // Return the instance
     return instance;
     }

     private Singleton()
     {
     // Constructor hidden because this is a singleton
     }

     public void customSingletonMethod()
     {
     // Custom method
     }
 }

MyApplication

public class MyApplication extends Application
    {
    @Override
    public void onCreate()
    {
    super.onCreate();

     // Initialize the singletons so their instances
     // are bound to the application process.
     initSingletons();
     }

     protected void initSingletons()
     {
     // Initialize the instance of MySingleton
     Singleton.initInstance();
     }

     public void customAppMethod()
     {
     // Custom application method
    }
}

当我运行这段代码时,我得到了在singleton中初始化的Hello和在mainactivity中给出的World,并再次在logcat中的nextactivity中显示Hello。我希望它在nextactivity中再次显示世界。请帮我纠正一下。

共有1个答案

孟乐逸
2023-03-14

提示:要在Android Studio中创建singleton类,请在项目中右键单击并打开菜单:

New -> Java Class -> Choose Singleton from dropdown menu
 类似资料:
  • 本文向大家介绍Android中Progress的简单实例,包括了Android中Progress的简单实例的使用技巧和注意事项,需要的朋友参考一下 Android中Progress的简单实例 Android中Progress网上的demo都是瞎扯淡,当然,你们也可以认为我的demo是瞎扯淡,因为,毕竟要理解别人的思路,很头疼,主要还是知道思路,然后一步一步慢慢来。今天我讲的是Progress的实现

  • 我正在开发一个Android应用程序,充值的手机通过手机的摄像头或从画廊的卡的照片…我使用tesseract库为此目的采取只使用黑名单和白名单的数字…它没有按预期工作 我使用的图片只包含这两行: 41722757649786 我只想识别数字,而不是字母,也不使用cropper..

  • 我正在使用最新版本的android studio gradle插件1.2.3。我无法理解如何在其中创建单元测试;所有可用的答案都是针对旧版本的Android。帮帮我.

  • 我知道这个问题很常见,但我真的很困惑如何将onClickListener应用到我的navigationDrawer项目中,我有两个项目,即编辑配置文件和注销。如果选择了其中一个项目,我只想进行Toast或打印。是否有人可以帮助我,我已经在互联网上搜索过了,但还没有找到onClickListener,需要帮助 我想我的主活动中缺少了一个 OnCreate()主活动 侧菜单。xml sidebar_h

  • 问题内容: 我有一个facebook初始化sdk调用,启动应用程序时需要它来初始化: 我想使用我的Application类来做到这一点。例如: 我的主要活动是使用Facebook登录按钮: 我怎么称呼我的申请单身人士?我如何使其onCreate()工作? 问题答案: 要使您的App类遵循 Singleton设计模式 : 然后在其他任何类中使用它: 如果这是您要的..

  • 本文向大家介绍详解Android中的Menu菜单键,包括了详解Android中的Menu菜单键的使用技巧和注意事项,需要的朋友参考一下 Android中的设置按钮:长按或点击菜单键 1.长按选项: 布局文件: 实现过程: 2.长按菜单项: 下面给大家补充点Menu的基本用法 使用xml定义Menu 菜单资源文件必须放在res/menu目录中。菜单资源文件必须使用<menu>标签作为根节点。除了<m