如何在安卓中最好地做到这一点



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

要求:

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

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

以下是我的问题:

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

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

我仍然会寻找一种可能的方法来做到这一点。我希望有人能引导我走上正确的道路。

更新

(3) 我最终使用 LocalBroadcast 从服务中向应用程序组件发出何时更新 UI 的信号。

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

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

通过 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. 广播接收器教程

使用 volley 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'])
}

相关内容

  • 没有找到相关文章

最新更新