Android设置为来自Application的服务

时间:2014-11-18 07:23:44

标签: android android-service android-preferences

在我的应用程序中,我可以使用以下代码将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");

2 个答案:

答案 0 :(得分:0)

带有uri的ContentProvider是一个选项。对于少量数据而言可能有点过分,但这可以使您甚至可以从不同的应用程序访问数据。如果这不能解答您的问题,我很抱歉,但是当我遇到这样的问题时,这是一个很棒的教程,帮助了我。

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

答案 1 :(得分:0)

您可以使用messenger将服务结果发送回活动,无需在外部文件上写入(共享首选项)。看到示例代码。 https://stackoverflow.com/a/26632865/2058260