有什么可以替代而不需要保持背景?

时间:2014-03-20 20:30:59

标签: android android-context

在一个不是Activity的类中,因此没有Context我需要存储一个文件,如:

public static void saveAvatar(String fileName, Bitmap avatar) {
    if (avatar == null)
        return;

    FileOutputStream fos;
    try {
        fos = context.openFileOutput(fileName + ".jpg", Context.MODE_PRIVATE);
        avatar.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
在课堂上

To make it work I need to keep a context,因为我从另一个没有上下文的班级中调用此方法。有没有办法在没有上下文的情况下使用ContentResolver或类似的东西?

2 个答案:

答案 0 :(得分:1)

您可以使用应用程序类的Context。使用以下模板可以将您的应用程序类用作单例:

private static MyApplication instance;

public static MyApplication getInstance() {
  return instance;
}

@Override
public void onCreate() {
  super.onCreate();
  instance = this;
}

现在,您可以将代码更改为以下内容:

public static void saveAvatar(String fileName, Bitmap avatar) {
    if (avatar == null)
        return;

    FileOutputStream fos;
    try {
        fos = MyApplication.getInstance().openFileOutput(fileName + ".jpg", Context.MODE_PRIVATE);
        avatar.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

有两种方式。

1)传入构造函数

中的上下文

2)传入文件或构造函数中的目录,然后使用标准java apis创建文件。