开发者社区> 问答> 正文

Android API 设计比较糟糕的一个地方:报错

最近接触 Android 多了些,也写了不少的代码,但老是觉得很便扭的一个地方:

很多很多的 API 都需要一个 Context 的参数,例如判断网络是否连接的 ConnectivityManager 需要 context 实例才能获取;文件存储需要 Context;资源的读取需要 Context;配置信息的读取和设置更是需要 Activity 实例。

而这个 Context 其实就是 Activity 的一个父类,相当于 UI 层面上的东西。我说的糟糕之处就在于一些本来跟界面无关的 API ,却非要一个 UI 的实例作为参数,导致功能模块和UI之间的耦合超紧密。

不知道大家是怎么处理这种问题的?

展开
收起
kun坤 2020-06-06 16:49:37 542 0
1 条回答
写回答
取消 提交回答
  • 整个Android就是一个耦合高的不能再高的框架,这么点小问题无所谓了 ######其实也无所谓耦合高不高的问题,实际上在Android上我们始终无法脱离Context这个东西,这个东西无处不在!因为Activity无处不在,
    ######

    public class ActivityEx extends Activity { protected static Context acontext = null;

    public void onCreate(Bundle savedInstanceState)
    {
    	super.onCreate(savedInstanceState);
    	acontext = this;
    }
    
    public void onResume()
    {
    	super.onResume();
    	acontext = this;
    }
    
    public static Context getContext()
    {
    	return acontext;
    }
    

    我也很讨厌这个context,我的Activity都是继承此类,需要时,getContext


    ###### 虽然我也不喜欢到处都需要context,但我不认为context是UI层面上的东西,有activity级别的context,也有application级别的context,如果只是需要一个context来做一些与界面无关的操作,可以自己写一个类继承Application,放一个静态方法用于获取整个应用的Context
    2020-06-06 16:49:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载