【问题标题】:Android Get Context in a functionAndroid 在函数中获取上下文
【发布时间】:2020-05-01 08:33:21
【问题描述】:

我是新手,刚刚制作我的第一个应用程序,所以请原谅我的措辞和理解不佳。

我创建了一个 MyAlarms() 类来帮助管理我的警报和通知代码。我需要一些函数的上下文,即 Toast、SharedPreferences 和 PendingIntent。 GetContext() 不起作用,getApplicationContext() 也不起作用,所以我决定从使用它的代码中将上下文传递给 MyAlarms(Context context)。这很好用。

但我现在读到我不应该这样做,因为这可能会导致内存泄漏问题。有没有其他方法可以在类中获取上下文?

提前致谢!

【问题讨论】:

    标签: android memory-leaks android-context


    【解决方案1】:

    如果你有一个静态函数,你必须在参数中从Activity中传入Context。

    例如:

    private static void sendMessageToActivity(String msg) {
        Intent intent = new Intent("intentKey");
        intent.putExtra("key", msg);
        LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
    }
    

    改为:

        @Override
        protected void onCreate(Bundle savedInstanceState) {
    ...
            sendMessageToActivity(this,"test");
        }
    
        private static void sendMessageToActivity(Context context, String msg) {
            Intent intent = new Intent("intentKey");
            intent.putExtra("key", msg);
            LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
        }
    

    【讨论】:

      【解决方案2】:

      我假设您需要上下文,因为您正在创建一些视图?如果是这样,那么您需要在放置该视图的任何布局中使用 .getContext()。

      【讨论】:

      • 实际上,我不是在创建视图。我正在设置警报和通知。无论如何,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 2014-01-30
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      相关资源
      最近更新 更多