有人可以给我提供以下 Activity/服务/应用程序组合的示例吗?我拥有这三个,但我已经把我的应用程序弄得一团糟,试图在这个地方传递一堆变量,现在我不知道发生了什么。请注意,我是 Android 新手,最近我一直在努力解决这个问题,因为有很多方法可以实现这一点。
我只想看看发生以下情况的 3 类 Activity 、服务和应用程序:
Activity 将变量 x 存储在 Application 中,启动 Service,并启动 Activity 2。
服务从应用程序检索变量 x。
Activity 2 从应用程序检索变量 x。
请注意,变量 x 可以是从 Int 到 ArrayList 的任何内容,并且在我的实际程序中,有很多变量(因此需要一个应用程序类)。
我真的很感激这个具体例子的一个很好的例子,因为我已经尝试弄清楚这一切有一段时间了。如果有人愿意花时间给出一个可靠的答案,我将不胜感激。
如果有人问为什么,整个事情就是一个音乐播放器。用户选择一首歌曲,并且艺术家/专辑等(希望)存储在应用程序中。然后启动服务,该服务控制歌曲播放,从应用程序获取歌曲路径。第二个 Activity 显示带有歌曲信息(也来自应用程序)的 UI,并具有下一个/上一个按钮,这将更改应用程序中某些变量的值,并指示服务检索新值。如果用户离开,变量将始终存在于应用程序中,因此如果创建另一个 UI,则可以轻松设置歌曲信息。
我使用的方法正确吗?
我可以提供一个我所拥有的示例,但目前情况很困惑。无论如何,如果您认为这对您有帮助,请在下面请求。
最佳答案
您不需要为此扩展Application
。您可以在某个类中使用静态成员变量,如下所示:
public class Globals {
public static String myVariable;
}
public class Activity1 extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
}
public void onClick(View view) {
// Save song name and stuff
Globals.myVariable = "SongNameAndStuff"; // Save in static global variable
startService(); // with appropriate parameters
startActivity(); // with appropriate parameters
}
}
public class Activity2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get song name from Globals
String mySongName = Globals.myVariable;
...
}
public class MyService extends Service {
// Access to song name from whatever method needs it:
String mySongName = Globals.myVariable;
}
关于android-intent - 在 Android 中的 Activity 、服务和应用程序之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10909658/