Android 开发问题:在无法直接获取或者通过传递获取 Context 的地方如何获取 Context

复制代码
在无法直接获取或者通过传递获取 Context 的地方,例如,工具类、静态方法中
如何获取 Context,调用 getExternalFilesDir 等方法?
处理策略
  1. 使用全局 Application 单例
java 复制代码
public class MyApplication extends Application {

    private static MyApplication myApplication;
    private static Context context;

    @Override
    public void onCreate() {
        super.onCreate();

        myApplication = this;
        context = getApplicationContext();
    }

    public static MyApplication getMyApplication() {
        return myApplication;
    }

    public static Context getContext() {
        return context;
    }
}
  1. AndroidManifest.xml 中声明
xml 复制代码
<application
    android:name=".application.MyApplication"
    ...>

    ...
</application>
  1. 在无法直接获取或者通过传递获取 Context 的地方调用
java 复制代码
File externalFilesDir = MyApplication.getMyApplication().getExternalFilesDir(null);
java 复制代码
// 或者

File externalFilesDir = MyApplication.getContext().getExternalFilesDir(null);
相关推荐
FQNmxDG4S3 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全4 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
2301_771717215 小时前
解决mysql报错:1406, Data too long for column
android·数据库·mysql
axng pmje5 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv75 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫5 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287925 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
dvjr cloi5 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
yaoxin5211235 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python