我有一个Main-Activity,它显示了几个微调器。通过主活动中的切换按钮,我启动了一个服务,它在后台收集GPS数据,测量距离并设置一些其他变量。当我再次单击Main-Activity中的切换按钮停止服务时,我停止了服务,因此onDestroy()命令在服务中执行。在服务中的onDestroy中,我希望将服务中的变量提交给已经打开的Main-Activity。到目前为止,我在服务中尝试过,但没有成功:
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的一侧:
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();
}我从未从服务中获得过数据。我正在尝试这个原因我需要从主活动启动服务,从主活动中用户停止服务并从中获取值,然后主活动应该将来自服务的值和从自身选择的微调器值传输到另一个活动。
我现在已经尝试了几天了,我也在这里找到了一些提示,但到目前为止还没有对我起作用。有人有什么想法吗?我必须使用广播接收器吗?做这个的正确方法是什么?
发布于 2012-02-24 13:51:51
在销毁服务之前,将数据存储在共享首选项中,并在主活动中访问它
发布于 2012-02-24 13:54:25
我不知道这是不是最好的方法,但只要让你创建的服务更新一个静态pojo即可。如果活动已经打开,那么您可以设置一个计时器来轮询活动中的静态pojo,以查看是否通过AsyncTask进行了更改。当pojo中的某些内容发生更新时,AsyncTask可以通知活动相应地更新UI。这样你就不用玩傻乎乎的捆绑包了。此外,如果你担心你的数据丢失,你可以随时使用SQLite。希望这能有所帮助。
发布于 2012-02-24 15:51:29
您需要在main activity中使用广播接收器来获取数据。
https://stackoverflow.com/questions/9425967
复制相似问题