我有一个Main-Activity,它显示了几个微调器。 通过Main-Activity中的Toggle-Button,我启动了一项服务,该服务在后台收集GPS数据,测量距离并设置其他一些变量。 当我再次单击Main-Activity中的Toggle-Button停止服务时,我停止服务,因此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(intent);",导致数据发送到的活动已经打开...主要活动。
在主要活动方面:
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();
}
我从来没有从服务中获取数据。 我正在尝试这个原因我需要从Main-Activity启动服务,从Main活动中用户停止服务并从中获取值,然后Main-Activity应该从服务AND和选定的微调器传输值价值从自身到另一项活动。
我现在尝试了几天,我也在这里找到了一些提示,但到目前为止我没有任何作用。 有人有什么想法吗? 我必须使用广播接收器吗? 什么是正确的方法?
答案 0 :(得分:1)
在销毁服务存储之前,共享首选项中的数据并在主要活动中访问它
答案 1 :(得分:0)
我不知道这是否是最佳方式,但只是让您创建的服务更新静态pojo。如果活动已经打开,那么您可以设置一个计时器来轮询来自Activity的静态pojo,以查看是否通过AsyncTask更改了某些内容。当pojo中的某些内容更新后,AsyncTask可以告诉Activity相应地更新UI。然后你不必玩弄愚蠢的捆绑。此外,如果您担心数据丢失,您可以随时使用SQLite。希望这可以帮助。
答案 2 :(得分:0)
您需要在主要活动中使用广播接收器来获取数据。