RAD Studio Delphi C++安卓下载服务示例


FMX.Android下载服务示例


这个演示展示了一个Android应用程序使用Android服务从互联网上下载图像。即使主应用程序不运行,Android服务也作为后台任务工作。
当图像文件被下载到设备时,会显示一个通知。处理通知加载先前下载的图像。
服务在执行下载过程后停止。
示例位置


你可以在下边路径找到Android下载服务示例:

描述


此示例演示如何创建和使用本地Android服务,根据需要处理异步请求。
演示准备好为每个线程使用不同的线程来管理多个请求。当服务被销毁时,所有线程都释放。
如何使用示例


打开工程:

  • 1、打开上述路径。
  • 2、打开示例应用程序组的项目文件:DownloadServiceDemo.groupproj
  • 3、在Project Manager选择DownloadImage
  • 4、右键点击选择Compile.
    • 注:编译项目生成需要部署到设备上的服务文件。
  • 5、在Project Manager的Target节点选择安卓设备
  • 6、按Shift + Ctrl + F9或者选择运行>Run Without Debugging部署应用到Android设备。

使用应用:

  • 1、要启动服务,请在应用程序上单击Download
  • 2、下载过程开始。
  • 3、当下载完成时,屏幕上显示一个通知。
  • 4、点击通知触发主应用的TNotificationCenter 的OnReceiveLocalNotification事件
  • 5、处理的通知后,图像加载到窗体的TImage 控件。
  • 6、点击Delete File删除TImage的图像。

实现


示例包含一个带有本地服务的多设备应用。主活动(main activity)启动包含服务和数据的名称intent 本地服务。
该服务在后台运行,即使main activity被杀死,仍然保持活动状态。该服务在匿名线程中启动下载过程。演示的目的是同时容纳多个下载过程。有一系列的线程,在下载过程结束后,每个线程都会被删除。服务在最后一次下载结束后停止。当服务被销毁时,线程数组将被释放。
下载完成后,立即创建并显示通知。当通知在activity中被处理,下载图片将以主窗体加载。
IntentServiceUnit
IntentServiceUnit 是一个用properties和functions定义的特定结构单元。
TIntentServiceHelper 类包含很多属性和方法创建intent。

  1. class function TIntentServiceHelper.Create(const AServiceName: string; Code: Integer; Data: string): TIntentServiceHelper;

此函数用带有服务名称、代码和数据传递创建intent 。主应用调用这个函数来创建intent。

  • 添加属性到intent,它采用putExtra。
  • 指定参数到intent,要启动服务,它使用setClass定义服务,并启动服务。
    • 它使用getPackageName()得到本地包名。对于远程服务,您需要明确设置包称。
    • 它将服务的名称作为第二个参数。
  1. class function TIntentServiceHelper.Create(const Intent: JIntent): TIntentServiceHelper;

此函数从作为参数传递的intent 获得代码和数据。服务调用此函数从主应用程序接收的intent 中提取信息。提取代码使用getIntExtra,提取路径到文件使用getStringExtra。
下载服务
下载服务是一个android服务项目。服务的类型是本地的。
Data Module包含一个TNotificationCenter控件
点击主应用的Download开启服务。OnClick调用StartService()。intent 服务结构被声明在一个被创建的IntentServiceUnit.pas类中。intent服务由服务名,代码、URL和文件名组成。
当服务开启后Data Module的OnStartCommand事件触发。它创建一个带有StartId的匿名现线程开始下载进程。
OnCreate事件创建线程数组来管理相同服务的多个下载过程。
在onDestroy事件释放线程数组。
下载图像应用
下载图像应用是一个多设备应用程序。它有一个TNotificationCenter 组件来管理收到的通知。
Download按钮从TEdit创建带有URL +文件名和服务名为DownloadService的intent,启动服务
Delete按钮从TImage清除图像并禁用这个按钮。
Uses


  • TNotificationCenter
  • CreateAnonymousThread
  • System.Android.Service
  • System.Android.ServiceApplication

该示例使用的为Android内置的java库。

  • Androidapi.JNI.App
  • AndroidApi.JNI.GraphicsContentViewText
  • Androidapi.JNI.Os
  • Androidapi.Helpers

参阅


» 本文链接:http://www.soguifan.com/delphi/app/1546.html
» 订阅本站:http://www.soguifan.com/feed
» 转载请注明来源:搜规范 » 《RAD Studio Delphi C++安卓下载服务示例》

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixin    pay_weixin
金额随意 快来“打”我呀~




留言