Service
public class MyTestService extends IntentService {
private ServerSocket serverSocket;
private Socket tempClientSocket;
Thread serverThread = null;
public static final int SERVER_PORT = 3001;
public MyTestService() {
// Used to name the worker thread, important only for debugging.
super("test-service");
}
@Override
public void onCreate() {
super.onCreate(); // if you override onCreate(), make sure to call super().
// If a Context object is needed, call getApplicationContext() here.
}
@Override
protected void onHandleIntent(Intent intent) {
Socket socket;
try {
serverSocket = new ServerSocket(SERVER_PORT);
} catch (IOException e) {
e.printStackTrace();
}
if (null != serverSocket) {
while (true) {
try {
socket = serverSocket.accept();
try {
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String mess = input.readLine();
BufferedWriter bf = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
PrintWriter out = new PrintWriter(bf,true);
out.println("message recieve");
input.close();
bf.close();
serverSocket.close();
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, "asdsadasd")
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle("Title")
.setContentText(mess)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(1, mBuilder.build());
} catch (IOException e) {
e.printStackTrace();
}
}
catch (Exception e){
}
}
}
}
}
JobScheduler
可以在Android框架使用JobScheduler在Android框架中,API用于调度任务或在后台工作。还可以指定网络类型或要运行作业的期间或少量其他参数,创建一个扩展JobService类并重写onStartJobs和onStopJobs方法
public class myJob extends JobService {
public boolean onStartJob(JobParameters jobParameters) {
}
public boolean onStopJob(JobParameters jobParameters) {
}
}
在OnStartJob中编写要在后台运行的代码,将此添加到JobInfo
JobInfo.Builder builder = new JobInfo.Builder(jobID, new ComponentName(context, Myjob.service));
在JobInfo.Builder上,可以包含调度条件
builder.setPeriodic(10000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
创建一个Jobscheduler并通过JobInfo根据您指定的调度参数调用JobService:
JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/15 07:01