0

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

要求:

  1. 开始投注并显示通知
  2. 通过 POST 将赌注发送到网站。
  3. 当结果到达时,用结果更新 UI。
  4. 如果用户没有按下停止按钮,则返回#2,否则停止投注并移除通知。
  5. 如果应用程序关闭或不是活动应用程序,投注仍将继续
  6. 如果单击通知,则显示/启动应用程序

经过大量的研究和阅读,我认为绑定的前台服务可以实现这一点,但我找不到(或者我只是不明白)如何做到这一点......

以下是我的问题:

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

  1. 我如何告诉服务使用活动中的初始投注数据开始投注?
  2. 服务如何知道应用程序何时关闭或不是屏幕上的活动应用程序?
  3. 服务如何更新应用的 UI?

我仍然会寻找一种可能的方法来做到这一点。我希望有人能指导我正确的方式..

更新

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

(2)通过使用LocalBroadcast,我认为我的服务不应该介意我的应用程序的状态。

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

4

2 回答 2

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

关于您的最后一个问题,您可以使用BroadcastReciever将数据从服务发送到活动并更新 UI

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

  1. 服务教程
  2. 官方开发者服务指南
  3. 广播接收器教程
于 2016-07-14T07:53:38.940 回答
0

使用凌空API。在 build.gradle 中将其添加为依赖项

dependencies {
    compile 'com.android.support:design:+'
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.android.volley:volley:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
于 2017-08-23T14:55:41.300 回答