如何写一个程序升级的service

这个升级可以在程序启动时调用:

首先建立一个service的类:MyService extends Service,然后在menifest中声明:

<service android:name=".MyService"></service>

这样来调用:

	Intent intent = new Intent();
	intent.setClass(MainActivity.this, MyService.class);

	<strong>startService(intent);  //不能用startActivity</strong>

这样会去执行Service中的onstart

public class MyService extends Service {

	/** thread to execute background task*/
	private Thread mThread = null;

	/** flag indicates if the service has been stopped*/
	private boolean mStopFlag = false;

	private static final int GET_UPGRADE_INFORMATION_COMPLETE = 202;

	/** Handler to get notify from thread*/
	private Handler mHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case GET_UPGRADE_INFORMATION_COMPLETE:
				System.out.println("=======notify need upgrade");
			default:
				break;
			}
		}
	};

	@Override
	public boolean onUnbind(Intent intent) {
		System.out.println("====service onUnbind");
		return super.onUnbind(intent);
	}

	@Override
	public IBinder onBind(Intent arg0) {
		System.out.println("====service onBind");
		return null;
	}

	/**
	 * @see android.app.Service#onCreate()
	 */
	@Override
	public void onCreate() {
		super.onCreate();
		System.out.println("====service onCreate");
	}

	/**
	 * @see android.app.Service#onStart(android.content.Intent, int)
	 */
	@Override
	public void onStart(Intent intent, int startId) {
		super.onStart(intent, startId);
		System.out.println("====service onstart");
		if(mThread == null){
			mThread = new UpgradeThread();
			mThread.start();
		}
	}

	private class UpgradeThread extends Thread{

		/**
		 * @see java.lang.Thread#run()
		 */
		@Override
		public void run() {
			super.run();
			//在这里写去服务端查看是否需要升级的逻辑
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			boolean ret = true;
			if(ret && !mStopFlag){
				Message msg = new Message();
				msg.what = GET_UPGRADE_INFORMATION_COMPLETE;
				mHandler.sendMessage(msg);
			}
		}

	}

	/* (non-Javadoc)
	 * @see android.app.Service#onDestroy()
	 */
	@Override
	public void onDestroy() {
		System.out.println("====ondestroy");
		mStopFlag = true;
		try {
			if (null != mThread && mThread.isAlive()) {
				try
				{
					mThread.stop();
				}
				catch (Exception e)
				{
				}
			}
			mThread = null;
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		super.onDestroy();
		System.gc();
	}

}

时间: 2024-08-26 05:55:41

如何写一个程序升级的service的相关文章

JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数

第二题 已知有十六支男子足球队参加2008 北京奥运会.写一个程序,把这16 支球队随机分为4 个组.采用List集合和随机数 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚.日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利 package Test03; import java.util.ArrayList; import java.util.List; import java.util.Random; public class

有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)

/* * 3. 有五个学生,每个学生有3门课(语文.数学.英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩), * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中. * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息 * */ import java.io.*; import java.util.*; public class Test3 { publi

例6:设缓冲区DATA中有一组单字节有符号数,以0为结束标志。写一个程序实现如下功能:把前5个正数依次送入缓冲区PDATA,把前5个负数依次送入缓冲区MDATA;如正数或负数不足5个,则用0补足。

自解: 1 DSEG SEGMENT 2 DATA DB -1,1,-2,2,3,-3,-4,4,5,-5,-6,6,0 3 PDATA DB 0,0,0,0,0 4 MDATA DB 0,0,0,0,0 5 DSEG ENDS 6 ;------------------------------------ 7 CSEG SEGMENT 8 ASSUME DS:DSEG,CS:CSEG 9 START: 10 MOV AX,DSEG 11 MOV DS,AX 12 13 MOV BX,OFFSE

需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次,超过5次提示:游戏试玩结束,请付费。

package cn.idcast4; import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.util.Properties; /* * 需求:有一个猜数字小游戏,请写一个程序实现在测试类中只能使用5次, *

写一个程序输出1到100这些数字。但是遇到数字为3的倍数的时候,输出“三”替代数字,为5的倍数用“五”代替,既是3的倍数又是5的倍数则输出“三五”。

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 /*写一个程序输出1到100这些数字.

c语言:日本某地发生了一件谋杀案,写一个程序来确定到底谁是凶手。

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.以下为4个嫌疑犯的供词. A说:不是我. B说:是C. C说:是D. D说:C在胡说 已知3个人说了真话,1个人说的是假话. 现在请根据这些信息,写一个程序来确定到底谁是凶手. 程序: #include<stdio.h> int main() { int killer=0; for (killer = 'A'; killer <= 'D'; killer++) { if ((killer != 'A') + (kil

3个人说了真话,1个人说的是假话。写一个程序来确定到底谁是凶手

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个.以下为4个嫌疑犯的供词.A说:不是我.B说:是C. C说:是D. D说:C在胡说.   等同于"不是D" 已知3个人说了真话,1个人说的是假话. 现在请根据这些信息,写一个程序来确定到底谁是凶手. 做之前的做题思路: 如果说A说的是假话,即BCD说的都是真话.即  是A,是C,是D,不是D.他们的说法相互矛盾,所以这种推论是错误的. 如果说B说的是假话,即ACD说的都是真话.即  不是A,不是C,是D,不是D.他们

【Java学习笔记】如何写一个简单的Web Service

本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web Developers Java SE 6 Windows XP 2.基本环境搭建: 1)Java SE6 JDK的安装:下载Java SE6 JDK,双击,安装默认选项进行安装即可. 2)Eclipse的安装与配置: 安装时直接解压.     配置处有两点,Window>Preferences>Jav

如何写一个native层的service

android的service大概有这么几种形式,Java service ,native service,或者Java层通过某种通信方式比如socket和demon交互. Java层的aidl很方便,写socket的demon方式也很好理解,native的就显得稍微麻烦一点,咱们通过一个例子来说一下,首先说我们不讲解binder的内部机制-. 我们打算写个简单的service,只提供set和get方法 1. 先写一个bin 的可执行文件 int main(int argc, char** ar