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

问题描述:

我有一个主要活动,它显示了几个spinners。 在主要活动中使用切换按钮我开始在后台收集GPS数据的服务,该服务测量距离并设置其他一些变量。 当我通过再次单击主活动中的切换按钮停止服务时,我停止服务,因此onDestroy()命令在服务中执行。 在Service中的onDestroy中,我想将服务中的变量提交给已经打开的Main-Activity。 我想,到目前为止,没有在服务的成功:从onDestroy()服务传输变量到已打开的主要活动

Intent intent = new Intent(this, Main.class); 
    Bundle b = new Bundle(); 
    Test = 2222; 
    b.putInt("Test", Test); 
    intent.putExtras(b); 

我不使用“startActivity(意向);”,原因应该将数据发送到活动已经打开...的Main-活动。

和主效的一面:

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(); 
    } 

我从来没有从服务数据。 我想这个原因,我需要从主要活动启动服务,从主要活动用户停止服务,并从中获取值,然后主要活动应该传输服务的值和从选定的微调器从自身到另一项活动。

我想现在好几天了,我也在这里找到一些提示,但到目前为止没有任何工作。 有人有什么想法吗? 我必须使用广播接收机吗? 什么是正确的方法来做到这一点?

共享偏好摧毁服务店的数据和访问的主要活动

+0

我用你对共享偏好的暗示做了它......非常简单的方法:-)谢谢! – venni 2012-02-24 15:22:10

我不知道这是不是最好的办法,但只是让你创建的更新静态POJO服务之前。如果活动已经打开,那么您可以设置一个计时器来轮询Activity中的静态pojo,以查看是否通过AsyncTask进行了更改。当pojo中的某些内容已经更新时,AsyncTask可以告诉Activity相应地更新UI。那么你不必玩弄傻捆绑。此外,如果您担心数据丢失,则可以始终使用SQLite。希望这可以帮助。

您需要主要活动中的广播接收器来获取数据。