Android 后台开发(第二十八节课到三十三节课)

后台开发
作为app提供数据,业务管理。
1.创建工程springBoot
1.1下载开发IntellijldE:百度;
1.2配置环境: jdk maven
1.3创建project :选择springintiazer ;官网:创建工程;
⒉.创建工程结构
1.entriy:
2.controller
3.service
4.common
5.dao
3.测试接口工具
postman:
4.Android客户端
1.创建http通信工具类
package com.imau.studentcms ;
import com.a1ibaba.fastjson . sON;import com.google.gson.Gson ;
import java.io.BufferedReader;import java.io.DataOutputstream;import java.io.Inputstream:

语言层面: 语言 + 对应的框架 + 运行时机制(语言解释执行器,垃圾回收等)
数据库: 有一种或几种常用数据库的操作经验,至少能进行增删查改的操作
算法数据结构: 常用数据结构, 队列,堆,链表;常用的算法, 哈希, 各种排序,字符串查找等。
操作系统(类unix,windows, 类unix偏多): 线程,进程,cpu 调度, 内存分配机制,文件缓存系统, epoll/select
网络协议: tcp/udp, http, https 等
需要使用Service
android中的Service是一种后台运行的程序,如果正常的android的app,在手机进入休眠后,会被挂起,或者如果使用内存过多会被直接杀掉,这样就无法达到后台监控运行的效果了,因此需要使用Service,Service相当于开了另一个进程,可以在休眠的状态下还继续运行,因此,如果要达到需求的效果,就必须使用Service
首先,需要创建一个Service

public class HandleMessageService extends Service {
	@Override
    public void onCreate() {
    	//用于初始化Service
	}

	 @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
    	//你需要进行的操作
    }
}

然后需要引用Service
在MainActivity中:

Intent intent = new Intent(MainActivity.this, HandleMessageService.class);
startService(intent);

这段代码可以写在你绑定的按钮中,利用按钮启动服务,当然,也可以在onCreate()中使用,看需求
需要更新UI界面
我需要将我的此次运行的操作实时的反馈给UI页面,当时,现在服务又相当于另一个进程了,就算不是另一个进程,如果开了另一个线程,android也不允许在另一个线程中更新主线程的控件内容,因此,我需要想一个另外的途径去实现这个功能。经过度娘的帮助,我发现,实现这个功能的方法有好几个,其中比较简单的就是以广播的形式进行通知,在Service中使用广播,在MainActivity中接收广播,直接上代码
创建广播的接收器
我这里这个广播的接收器是作为MainActivity的内部类创建的,原因:比较容易获取MainActivity中的控件,直接进行更新就可以了

/**
     * @author dtw
     * */
    class DataReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //进行更新控件
        }
    }

注册广播
一般注册广播可以有两种方式,一种是静态注册,一种是动态注册
静态注册

<receiver android:name=".MainActivity$DataReceiver">
   <intent-filter>
        <action android:name="android.intent.action.EDIT"/>
    </intent-filter>
</receiver>

段xml的配置需要写在app的配置文件中,即,你配置权限的文件那里(AndroidManifest)
动态注册

roadcastReceiver broadcastReceiver =  new DataReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_EDIT);
 registerReceiver(broadcastReceiver,intentFilter);

由于我们现在使用的是内部类,因此,得进行动态注册
使用广播

Intent intent = new Intent();
intent.setAction(Intent.ACTION_EDIT);
intent.putExtra("content", content);
sendBroadcast(intent);

Service使用这段代码
特别说明
在上面广播的注册中,有一个IntentFilter的参数,他里面设置了一个值:Intent.ACTION_EDIT,这个值必须要和使用广播时的intent.setAction(Intent.ACTION_EDIT);对应上,要不然没办法接收

public class MyService extends Service{
private int one;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override public void onCreate() {
super.onCreate();
new Thread(new Runnable() {
@Override
public void run() {
while (true){
try {
Log.i(“infomationHaha”,one+""); one++;
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace(); }
}
}
}).start();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId);
}
@Override public void onDestroy() {
super.onDestroy();
}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值