1

我正在为游戏开发数据库。

我想从一个活动中获取分数并在数据库活动中调用它,它将通过使用意图在数据库中更新,当意图被触发时游戏会暂停。

我也尝试过使用应用程序类(欢迎提出建议)。

有没有办法通过在后台触发意图来在活动之间传递数据,这样它就不会中断游戏玩法?

4

4 回答 4

0

你的数据库不应该在一个活动中。Activity 代表应用程序中的一个屏幕(或一个用例),不应像数据库类那样代表实现细节。

作为替代方案,您可以将数据库代码放在可以从同一应用程序中的任何位置访问的 Singleton 类中。您还可以在应用程序的 onCreate 方法中创建数据库并将其存储在其中的静态字段中,或者只是创建一个单独的类来公开静态方法以访问数据库。

如果您对使用 Intents 感到不知所措,则需要使用数据库服务而不是 Activity。这样,当您将数据发送到服务时,当前 Activity 将保持在顶部。但与简单的静态类/单例方法相比,这会使事情复杂化很多。

于 2013-01-14T16:26:23.880 回答
0

你似乎有一个很大的混淆:不应该有database activity. 您应该创建一个数据库助手类,并使其成为应用程序类中的成员变量。

// inside application class
private static MyDatabaseHelper mMyDB;

public MyDatabaseHelper static getDatabase() {
    if (mMyDB == null) {
        // mInstance should be the application instance, means make the
        // application class a singleton
        mMyDB = new MyDatabaseHelper(mInstance);
        // the constructor should open/create the database
    }
    return mMyDB;
}

有了这个,您可以在任何地方使用您的数据库。

有了它,您可以轻松地从任何地方更新每个值。因此,无需触发传递值的意图。而是直接更新您的数据库。

于 2013-01-14T16:28:21.877 回答
-1

有多种方法可以做到这一点。您可以使用处理程序、服务,然后使用 setresult 来回调父活动的 onactivity 结果。

于 2013-01-14T16:21:10.363 回答
-2
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();

b.putInt("key", 1);

intent.putExtras(b);

startActivity(intent);
于 2013-01-14T16:24:27.220 回答