首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量从onDestroy()的服务传输到已经打开的主活动

将变量从onDestroy()的服务传输到已经打开的主活动
EN

Stack Overflow用户
提问于 2012-02-24 13:40:00
回答 3查看 226关注 0票数 1

我有一个Main-Activity,它显示了几个微调器。通过主活动中的切换按钮,我启动了一个服务,它在后台收集GPS数据,测量距离并设置一些其他变量。当我再次单击Main-Activity中的切换按钮停止服务时,我停止了服务,因此onDestroy()命令在服务中执行。在服务中的onDestroy中,我希望将服务中的变量提交给已经打开的Main-Activity。到目前为止,我在服务中尝试过,但没有成功:

代码语言:javascript
复制
    Intent intent = new Intent(this, Main.class);
    Bundle b = new Bundle();
    Test = 2222;
    b.putInt("Test", Test);
    intent.putExtras(b);

我没有使用“startActivity( open...the );”,因为应该发送数据的活动已经是Main-Activity了。

在Main-Activity的一侧:

代码语言:javascript
复制
    Bundle b = getIntent().getExtras();
    if (b != null){ 
       Test = b.getInt("Test");
    }
    else{
       //..oops!
       Toast.makeText(Main.this, "Oops...Nothing from service! :(", Toast.LENGTH_SHORT).show();
    }

我从未从服务中获得过数据。我正在尝试这个原因我需要从主活动启动服务,从主活动中用户停止服务并从中获取值,然后主活动应该将来自服务的值和从自身选择的微调器值传输到另一个活动。

我现在已经尝试了几天了,我也在这里找到了一些提示,但到目前为止还没有对我起作用。有人有什么想法吗?我必须使用广播接收器吗?做这个的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-24 13:51:51

在销毁服务之前,将数据存储在共享首选项中,并在主活动中访问它

票数 1
EN

Stack Overflow用户

发布于 2012-02-24 13:54:25

我不知道这是不是最好的方法,但只要让你创建的服务更新一个静态pojo即可。如果活动已经打开,那么您可以设置一个计时器来轮询活动中的静态pojo,以查看是否通过AsyncTask进行了更改。当pojo中的某些内容发生更新时,AsyncTask可以通知活动相应地更新UI。这样你就不用玩傻乎乎的捆绑包了。此外,如果你担心你的数据丢失,你可以随时使用SQLite。希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-02-24 15:51:29

您需要在main activity中使用广播接收器来获取数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9425967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档