如何从android中获取服务数据

时间:2016-01-01 20:16:17

标签: android

嗨,只是一个Android新手。我正在尝试创建一个服务,它将不断获取位置并更新活动exp:仪表板地图。我一直关注Android service

现在我的问题是如何 - 从服务中不断通知Dashboard活动(尝试使用while循环模拟通知数据) - 我能够在connect和onBind上打印日志,但我想知道如何不断地从服务中查看通知并从Activity ie.Dashboard中检索通知数据。希望我能够传达我的问题。我正在寻找最新的api。

1 个答案:

答案 0 :(得分:0)

您应该在Dashboard活动中使用BroadcastReceiver。要执行此操作,请执行以下步骤:

将内部类添加到Dashboard活动中,如下所示:

public class ActionCompleteReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        String state = "disconnected";
        if(intent != null)
            state = intent.getStringExtra("State");
        //Your Code
    }
}

将此代码添加到仪表板活动:

private ActionCompleteReceiver mActionReceiver;
public static final String ACTION_SERVICE_COMPLETE = "YUOR_PACKAGE_NAME.ACTION_SERVICE_COMPLETE";

在Dashboard活动中的onResume方法中注册接收器,如下所示

@Override
protected void onResume()
{
    super.onResume();
    if(mActionReceiver = null)
        mActionReceiver= new ActionCompleteReceiver();
    registerReceiver(mActionReceiver, new IntentFilter(ACTION_SERVICE_COMPLETE));
}

取消注册接收者onPause和onDestroy:

@Override
protected void onPause()
{
    super.onPause();

    if (mActionReceiver != null)
    {
        try
        {
            unregisterReceiver(mActionReceiver );
        }
        catch (Exception ignored)
        {
        }
    }
}

@Override
public void onDestroy()
{
    super.onDestroy();

    if (mActionReceiver != null)
    {
        try
        {
            unregisterReceiver(mActionReceiver );
        }
        catch (Exception ignored)
        {
        }
    }
}

在您需要通知Dashboard活动的服务中添加以下内容:

Intent intent = new Intent(DashboardActivity.ACTION_SERVICE_COMPLETE);
intent.putExtra("State", "Connected");
sendBroadcast(intent);