android-intent - 在 Android 中的 Activity 、服务和应用程序之间传递变量

标签 android-intent android

有人可以给我提供以下 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/

相关文章:

java - Android 蓝牙已配对、连接但从未将数据接收到 TextView

facebook的Android共享 Intent -共享文本和链接

java - 自定义共享意向对话框这可能吗?

android - 我需要在正文中添加 href 以实现 gmail Intent 。适用于 Android 4.3,但不适用于 6/7

android - 来自通知的 Intent 没有额外内容

android - 如何在我的 android 客户端上启用堆更新

android - getBoolean(EXTRA_NO_CONNECTIVITY) 总是返回 false

Android DataBinding 在点击时更改其他 View 的字体

java - 为什么我从浏览器获得了正确的 URL 响应,但 Android 的 "HttpGet"中却是空的?

android - 无法在 Galaxy Tab 2 (7.0") 上检测到音频插孔读卡器