gpt4 book ai didi

java - 如何将上下文传递给静态方法?

转载 作者:行者123 更新时间:2023-12-01 19:37:27 24 4
gpt4 key购买 nike

在我的 fragment 中,我从另一个类调用静态方法

if (getActivity() != null) {
Main.bindMusicService(getActivity().getApplicationContext(), position, songList);
}

主类:

private static Context context;

private static ArrayList<Song> songList;

private static int songIndex;

public static void bindMusicService(Context c, int songPos, ArrayList<Song> songs){
context = c;
songIndex = songPos;
songList = songs;
/*mediaPlayerServiceIntent binds our connection to the MediaPlayerService. */
if (!mServiceIsBound) {
try {
mediaPlayerServiceIntent = new Intent(c, MediaPlayerService.class);
c.bindService(mediaPlayerServiceIntent, serviceConnection, Context.BIND_AUTO_CREATE);
} catch (Exception e) {
Log.e("Main", "Service is not bound!");
}
}else{
Main.mediaPlayerService.startActionPlay(context, songList, songIndex);
}
Log.i("Main","Service is bound!");
}

我收到此上下文警告

Do not place Android context classes in static fields; this is a memory leak

将数组列表、适配器位置和上下文发送到另一个类中的另一个方法的正确方法是什么?

最佳答案

您的问题是没有发送Context。您的问题是:

private static Context context;

如果您绝对确定需要类似的东西,请将其替换为:

private static Application context;

调整您的方法以将 Application 作为参数,并使用 getApplication() 而不是 getApplicationContext() 调用该方法>.

IOW,您的代码相当安全 - 您正在使用 Application 上下文 - 但代码的细节让 Lint 感到紧张。

关于java - 如何将上下文传递给静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56925922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com