如何在不使用public static final的情况下在Android中声明常量

时间:2017-07-14 13:17:31

标签: java android memory-leaks bluetooth

我正在开发一个蓝牙应用程序,该应用程序一直在运行,直到用户卸载应用程序或关闭其移动设备。我收到一条错误消息:"遗憾的是app停止了工作"。从我最初的研究来看,这似乎是一个内存泄漏问题。到目前为止,我发现任何带静态引用的对象都会泄漏内存。所以我需要删除变量的静态引用。我的项目有很多常量,如何在不使用public static final的情况下编写常量?

目前,我正在使用这样的东西:
for item in soup.find_all('tr', class_="srrowns"): print(item.td.next_sibling.next_sibling.a['href'])

更新

我认为我的问题需要更多信息,所以这里是

私有静态变量问题  1)嗨朋友,我的应用程序使用数据库有9个表,每个表有7到13列,所以列名我宣布像     private static final String COLUMN_NAME_ACTIVE =" active&#34 ;; 类似地,已经声明了超过70个静态变量。 2)我已声明的另一个类中访问的一些实例 3)1 util class它是一个静态类

5 个答案:

答案 0 :(得分:1)

您可以使用xml格式定义res / values中的常量,并使用R.引用它。在这种情况下R.integer.

示例:

<resources>
    <integer name="notif_id">1234</integer>
</resources>

使用示例:

someMethodName(R.integer.notif_id)

答案 1 :(得分:0)

创建一个Interface类并在那里定义变量

public interface Constants{

String Name="AAA";
String Age="20";

}

并像这样使用

String name=Constants.Name;

答案 2 :(得分:0)

您需要保留数据,您可以使用SharedPreferences这样:

拒绝您的SharedPreferences

SharedPreferences sharedpreferences = getSharedPreferences("mypref", Context.MODE_PRIVATE); 

写入您的SharedPreferences:

Editor editor = sharedpreferences.edit();
editor.putString("key", "value");
editor.commit();

并在需要时阅读:

String value = sharedpreferences.getString("key","defaultValue");

答案 3 :(得分:0)

通常我在一个文件中声明常量,这将帮助我和其他开发人员更新任何配置/值。

您可以使用List<Person>来实现相同目标。默认情况下,接口是静态final,声明为static和final的变量声明。

interface

您可以通过2种方式在接口中使用常量 -

一个。可以直接调用它们,例如MyConstants.SERVER_URL;

湾在您的类中实现public interface MyConstants { String SERVER_URL = "my_server_address"; int SPLASH_LAUNCH_TIME = 1000; } 并直接访问所有常量。

明智地选择你的方法,通过使用方法2,你将淹没你班上的所有常数。即使他们在那个班级也不需要。

答案 4 :(得分:0)

您可以使用枚举:

public enum Gender {
   MALE,
   FEMALE
}

然后像这样访问:

Gender.MALE