在我的应用程序中,我可以使用以下代码将String设置为SharedPreferences
:
SharedPreferences prefs = this.getSharedPreferences("com.example.app", getApplicationContext().MODE_PRIVATE);
prefs.edit().putString("last__id", mLastID).commit ();
我可以通过以下方式从服务中SharedPreferences
获取此搜索到的数据:
SharedPreferences sharedPref = getSharedPreferences("com.example.app", getApplicationContext().MODE_PRIVATE);
firstID = sharedPref.getString("last__id", null);
现在我没有问题,但是在通过服务启动活动并更改last__id
之后,我无法从服务中获得新的提交值,您认为我的代码问题是什么,是什么提示和技巧?
POST UPDATE:
在评论H4SN后,我想使用Messenger:
我现在收到此错误:
ir.tsms fatal error : println needs a message
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.e(Log.java:231)
从活动传递数据:
Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
Bundle Recevied = msg.getData();
String resp = Recevied.getString("Mkey");
}
};
Messenger messenger = new Messenger(myHandler);
Message msg = Message.obtain();
Bundle data = new Bundle();
data.putString("Mkey",mLastID);
msg.setData(data);
从服务中获取数据:
Bundle data = new Bundle();
String firstID = data.getString("Mkey");
答案 0 :(得分:0)
带有uri的ContentProvider是一个选项。对于少量数据而言可能有点过分,但这可以使您甚至可以从不同的应用程序访问数据。如果这不能解答您的问题,我很抱歉,但是当我遇到这样的问题时,这是一个很棒的教程,帮助了我。
答案 1 :(得分:0)
您可以使用messenger将服务结果发送回活动,无需在外部文件上写入(共享首选项)。看到示例代码。 https://stackoverflow.com/a/26632865/2058260