如何在不打开的情况下将数据发送到另一个活动

Posted

技术标签:

【中文标题】如何在不打开的情况下将数据发送到另一个活动【英文标题】:How to send data to another activity without opening it 【发布时间】:2014-09-26 07:32:18 【问题描述】:

我希望能够在不打开活动 b 的情况下将数据从活动 a 传输到活动 b,我希望稍后能够返回活动 b 并查看显示的数据我希望数据(文本)保持均匀如果手机已关闭或应用已关闭。

我已经尝试过使用意图和共享偏好,但是我看到的示例都需要我去活动 b。

【问题讨论】:

How to use SharedPreferences in android to store, fetch and edit values 的可能重复项 【参考方案1】:

您应该将数据存储在其他地方 - 例如在 SQLite 数据库、静态全局模型或 SharedPreferences 中。在活动 B 中将更改应用到您的数据并在活动 A 的 onResume() 方法中读取它。

编辑

您可以检查如何从数据库中保存和读取数据,例如HERE,我在这里描述了如何创建数据库和保存来自传感器的数据。要从 DB 中读取数据,请使用例如rawQuery() - here你可以找到一些细节。

【讨论】:

任何关于我如何做到这一点的例子【参考方案2】:

SharedPreferences 不一定要求您转到活动 B。它基本上只是让您轻松访问文件,您可以从任何活动中做到这一点。例如,在活动 A 中创建这些方法:

public String getPreference() 
    SharedPreferences sp = getSharedPreferences("preferenceName", 0);
    return sp.getString("preferenceKeyValue", "default value if no preference is found");

public void setPreference(String data) 
    SharedPreferences.Editor editor = getSharedPreferences("preferenceName", 0).edit();
    editor.putString("preferenceKeyValue", data).commit();

然后这样称呼他们:

setPreference("data for activity B");
// later on...
String data = getPreference();

该示例使用字符串,但您可以保存以下任何数据:布尔值、浮点数、整数、长整数和字符串。

以下是根据您的具体情况修改的方法(更好的命名):

public String getActivityBData() 
    SharedPreferences sp = getSharedPreferences("Activity B Data", 0);
    return sp.getString("data", "There is no data yet!");

public void setActivityBData(String str) 
    SharedPreferences.Editor editor = getSharedPreferences("Activity B Data", 0).edit();
    editor.putString("data", str).commit();

您也可以将这些方法放在您的活动 B 类中并像这样访问它们。保存的这些数据并不特定于任何活动。

【讨论】:

我如何将数据放到第二个活动中 它不需要“开启”第二个活动。你所说的你想做的事是不可能和不必要的。【参考方案3】:

您必须使用 Sqlite 数据库或使用共享首选项

检查此链接:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

http://developer.android.com/reference/android/content/SharedPreferences.html

Sqlite 数据库示例:

http://www.vogella.com/tutorials/AndroidSQLite/article.html

http://hmkcode.com/android-simple-sqlite-database-tutorial/

http://www.tutorialspoint.com/android/android_sqlite_database.htm

【讨论】:

以上是关于如何在不打开的情况下将数据发送到另一个活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用任何浏览器相关组件的情况下将数据发布到另一个网站?

如何在不复制目标 NSManagedObject 的情况下将目标 NSManagedObject 添加到另一个具有反向多对多核心数据关系的对象?

如何在不丢失鼠标抓取的情况下将 QGraphicsItem 移动到另一个场景?

如何在不使用全局存储的情况下将类对象从一个屏幕传递到另一个屏幕

如何在不显示第一个组件的情况下将组件路由到另一个组件? - 角

如何在不使用离子的this.navCtrl.push(PostPage,data)的情况下将数据传递到另一个页面