通过后台活动传递数据

时间:2013-01-14 16:19:01

标签: android sqlite android-intent

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

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

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

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

4 个答案:

答案 0 :(得分:0)

您的数据库不应位于“活动”中。 Activity表示应用程序中的一个屏幕(或一个用例),不应表示像数据库类一样的实现细节。

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

如果你在某种程度上使用Intents设置死机,则需要使用数据库服务而不是活动。这样,当您将数据发送到服务时,当前活动将保持在最顶层。但与简单的静态类/单例方法相比,这会使事情复杂化。

答案 1 :(得分: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;
}

通过这种方式,您可以随处使用您的数据库。

通过它,您可以轻松更新来自任何地方的每个值。所以不需要激发传递值的意图。而只是直接更新您的数据库。

答案 2 :(得分:-1)

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

答案 3 :(得分:-2)

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();

b.putInt("key", 1);

intent.putExtras(b);

startActivity(intent);