如何在Android中做到最好?

时间:2016-07-14 05:07:17

标签: java android aide-ide

我正在考虑制作一个与Web API交互的应用程序。

要求:

  1. 开始下注和显示通知
  2. 通过POST将投注发送到网站。
  3. 结果到达时,请使用结果更新UI。
  4. 如果用户没有按下停止按钮,则回到#2,否则停止下注并删除通知。
  5. 如果应用关闭或不是有效应用,则投注仍会继续
  6. 如果点击通知,则显示/启动应用
  7. 经过大量的研究和阅读后,我认为绑定的前台服务可以实现这一目标,但我无法找到(或者我可能根本不理解)这样做...

    以下是我的问题:

    如果我提供服务并将投注逻辑放入其中,我的活动/应用程序将启动该服务并与之绑定..

    1. 如何告知服务开始使用活动的初始投注数据进行投注?
    2. 服务如何知道应用何时关闭或不是屏幕上的有效应用?
    3. 服务如何更新应用的用户界面?
    4. 我仍然会寻找一种可能的方法来做到这一点。我希望有人能以正确的方式引导我。

      更新

      (3)我最终使用LocalBroadcast来通知服务中的App组件何时更新UI。

      (2)使用LocalBroadcast,我认为我的服务不应该关注我的应用程序状态。

      (1)我使用Bound Service并在服务上调用方法来传递数据并开始下注。

2 个答案:

答案 0 :(得分:1)

您通过Intent将数据发送到服务: https://stackoverflow.com/a/15899750/3423468

Intent serviceIntent = new Intent(YourService.class.getName());
serviceIntent.putExtra("data", "123456");
context.startService(serviceIntent);

然后在服务覆盖OnStartCommand方法:

public int onStartCommand (Intent intent, int flags, int startId)
{
   String userID = intent.getStringExtra("data");
   return START_STICKY;//or non-sticky
}

对于处理应用程序关闭事件,您可以检查此答案(从未使用过我自己): https://stackoverflow.com/a/26882533/3423468

关于你的上一个问题,你可以use BroadcastReciever to send data from service to activity and update UI

如需进一步阅读,请查看以下链接:

  1. Services Tutorials
  2. Official Developers Guide To Services
  3. BroadCastReceivers Tutorial

答案 1 :(得分:0)

使用volley api。 将其添加为build.gradle中的依赖项

fig, ax = plt.subplots(1, 1,figsize=(18, 4))
ax.plot(obs_times, wind_speed, linewidth=2, color='blue')
arrow_scaler = 3
for i in xrange(0,len(obs_times),4):
    u = arrow_scaler*-1*np.sin((np.pi/180)*(wind_direction[i]))
    v = arrow_scaler*-1*np.cos((np.pi/180)*(wind_direction[i]))
    ax.arrow(obs_times[i], (wind_speed.max()+2)/2, u, v, fc='k', ec='k', head_width=0.4, head_length=0.6)