嗨,只是一个Android新手。我正在尝试创建一个服务,它将不断获取位置并更新活动exp:仪表板地图。我一直关注Android service
现在我的问题是如何 - 从服务中不断通知Dashboard活动(尝试使用while循环模拟通知数据) - 我能够在connect和onBind上打印日志,但我想知道如何不断地从服务中查看通知并从Activity ie.Dashboard中检索通知数据。希望我能够传达我的问题。我正在寻找最新的api。
答案 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);