Android 在Service服务中上传数据到服务器

简介: Android 在Service服务中上传数据到服务器

前言:根据自己的项目去总结的一个思路,和具体实现方法。

思路:在项目中创建一个服务类UserlogService 继承自Service

之后根据Service的生命周期。

Service的生命周期这一块,可以看我的这篇博文,Service的详解,就不在本篇文章中讲解了。

根据Service生命周期,把具体操作写在onStartCommand()中。

onStartCommand()的代码如下:

定期触发3秒上传一次

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        mHelper = UserLogDBHelper.getInstance(this, 1);
        mHelper.openReadLink();
        myhandler.sendMessageDelayed(Message.obtain(myhandler, 1), 3000);
        return  START_STICKY;
    }

1.查询本地没有上传的数据。

//查询本地未上传数据
ArrayList<UserLog> arrayListlog = readSQLite();

调用readSQLite方法:

//查询本地数据
    private ArrayList<UserLog> readSQLite() {
        ArrayList<UserLog> arrayList = mHelper.query("1=1");
        return arrayList;
    }

2.调用API,上传数据,这一步才是核心。

这里面用的是Post异步请求

/**调用API,上传数据
     * @param userLog
     */
    private void setUploaddata(final UserLog userLog) {
        try {
        String userlogjson = new Gson().toJson(userLog);
        //定义OKhttp
        OkHttpClient okHttpClient = new OkHttpClient();
        MediaType JSON = MediaType.parse("application/json");
        //定义请求体
        RequestBody body = RequestBody.create(JSON, userlogjson);
            Request request = new Request.Builder()
                    .post(body)
                    .url("http://v.juhe.cn/toutiao/index")
                    .build();                    //异步请求
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                }
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String ss = response.body().string();
                    ResultMsg resultMsg = new Gson().fromJson(ss, ResultMsg.class);
                    if (resultMsg.Result.equals("1")) {
                        Log.d(TAG, "run: 上传成功");
                        Looper.prepare();
                        //上传成功的数据从本地删除
                        Delete(userLog.UserLogID);
                        Looper.loop();
                    } else {
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3.上传数据之后,从本地删除已经上传的数据,上面代码已经写出

这是Delete()的具体方法。

//删除本地数据
    private void  Delete(String UserLogID)
    {
        try {
            mHelper.delete("UserLogID='" + UserLogID+"'");
        }catch (Exception ex)
        {
            Log.d(TAG, "Delete: "+ex.toString());
        }
    }

最后一步,在MainActivity中,启动服务。

//开启日志上传服务
Intent intent=new Intent(this,UserLogService.class);
startService(intent);

以上就是上传到服务器的一个基本思路,仅做记录参考,有需要的可以参考学习!


目录
相关文章
|
8天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
13 1
|
3天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
25 4
|
15天前
|
安全 Java 网络安全
对象存储oss使用问题之使用oss上服务器后显示服务异常如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
17 0
|
15天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android&#39;s AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
11 0
|
15天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
11 0
|
16天前
|
网络协议 安全 Linux
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器
如何使用Android手机通过JuiceSSH远程访问本地Linux服务器
|
19天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
19天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
19天前
|
关系型数据库 MySQL Linux
服务器脚本推荐,yum更新阿里镜像源、安装Docker、使用Docker安装MySQL服务
服务器脚本推荐,yum更新阿里镜像源、安装Docker、使用Docker安装MySQL服务
68 1
|
5月前
|
XML Java Android开发
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
Android Studio App开发之服务Service的讲解及实战(包括启动和停止,绑定与解绑,推送服务到前台实现音乐播放器,附源码)
128 0