我将 Google Cloud Messaging (GCM) 的发件人 ID 存储在资产文件夹中的属性文件中。我想在调用GCMIntentService
父构造函数(GCMBaseIntentService
的构造函数)之前获取发件人 ID。我目前的解决方案是:
在我的默认活动中,名为InitActivity
:
public class InitActivity extends Activity {
public static Context appContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
appContext = getApplicationContext();
// ...
在我的GCMIntentService
:
public GCMIntentService() {
super(GCMIntentService.getSenderID());
Log.d(TAG, "GCMIntentService SenderID : " + GCMIntentService.getSenderID());
}
private static String getSenderID() {
Resources resources = InitActivity.appContext.getResources();
AssetManager assetManager = resources.getAssets();
try {
InputStream inputStream = assetManager.open("config.properties");
Properties properties = new Properties();
properties.load(inputStream);
return properties.getProperty("SENDER_ID");
} catch (IOException e) {
System.err.println("Failed to open property file");
e.printStackTrace();
return null;
}
}
我的问题是:
以静态方式保存 Context 是否可以(它会消耗大量内存,还是会导致内存泄漏)?参考问题。
有没有更好的方法从属性文件中获取发件人 ID?
将代码放在 Activity 中是明智的选择吗?