我正在为游戏开发数据库。
我想从一个活动获得分数并在数据库活动中调用它,在数据库中使用intent更新它,当意图被触发时游戏暂停。
我也尝试过使用应用程序类(欢迎提出建议)。
有没有办法通过在后台触发意图来在活动中传递数据,这样它就不会中断游戏玩法?
答案 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);