android 一个简单的服务例子

  1 public class MessageService extends Service {
  2
  3     // 获取消息线程
  4     private MessageThread messageThread = null;
  5
  6     // 点击查看
  7     private Intent messageIntent = null;
  8     private PendingIntent messagePendingIntent = null;
  9
 10     // 通知栏消息
 11     private int messageNotificationID = 1000;
 12     private Notification messageNotification = null;
 13     private NotificationManager messageNotificatioManager = null;
 14     private final IBinder binder = new MessageService.LocalBinder();
 15
 16     @Override
 17     public IBinder onBind(final Intent intent) {
 18         return binder;
 19     }
 20
 21     // 定义内容类继承Binder
 22     class LocalBinder extends Binder {
 23         // 返回本地服务
 24         // 可以返回这个服务,然后<bold>activity可以通过服务调用服务的方法</bold>了。
 25         MessageService getService() {
 26             return MessageService.this;
 27         }
 28
 29     }
 30
 31     @Override
 32     public int onStartCommand(final Intent intent, final int flags,
 33             final int startId) {
 34         // 初始化
 35         messageNotification = new Notification();
 36         messageNotification.icon = R.drawable.ic_launcher;
 37         messageNotification.tickerText = "新消息";
 38         messageNotification.defaults = Notification.DEFAULT_SOUND;
 39         messageNotificatioManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 40
 41         messageIntent = new Intent(this, MessageActivity.class);
 42         messagePendingIntent = PendingIntent.getActivity(this, 0,
 43                 messageIntent, 0);
 44
 45         // 开启线程
 46         messageThread = new MessageThread();
 47         messageThread.isRunning = true;
 48         messageThread.start();
 49
 50         return super.onStartCommand(intent, flags, startId);
 51     }
 52
 53     /**
 54      * 从服务器端获取消息
 55      *
 56      */
 57     class MessageThread extends Thread {
 58         // 运行状态,下一步骤有大用
 59         public boolean isRunning = true;
 60
 61         @Override
 62         public void run() {
 63             while (isRunning) {
 64                 try {
 65                     // 休息15s
 66                     Thread.sleep(15 * 1000);
 67                     // 获取服务器消息
 68                     String serverMessage = getServerMessage();
 69                     if (serverMessage != null && !"".equals(serverMessage)) {
 70                         // 更新通知栏
 71                         messageNotification.setLatestEventInfo(
 72                                 MessageService.this, "新消息", "奥巴马宣布,本拉登兄弟挂了!"
 73                                         + serverMessage, messagePendingIntent);
 74                         messageNotificatioManager.notify(messageNotificationID,
 75                                 messageNotification);
 76                         // 每次通知完,通知ID递增一下,避免消息覆盖掉
 77                         messageNotificationID++;
 78                     }
 79                 } catch (InterruptedException e) {
 80                     e.printStackTrace();
 81                 }
 82             }
 83         }
 84     }
 85
 86     /**
 87      * 这里以此方法为服务器Demo,仅作示例
 88      *
 89      * @return 返回服务器要推送的消息,否则如果为空 的话,不推送
 90      */
 91     public String getServerMessage() {
 92         return "YES!";
 93     }
 94
 95     @Override
 96     public void onDestroy() {
 97         System.exit(0);
 98         // 或者,二选一,推荐使用System.exit(0),这样进程退出的更干净
 99         // messageThread.isRunning = false;
100         super.onDestroy();
101     }
102 }

from:源自

时间: 2024-10-09 07:46:24

android 一个简单的服务例子的相关文章

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

用nodejs搭建一个简单的服务监听程序

作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还是记录一下方便以后复习! 今天主要记录一下,很久以前用nodejs制作一个简单的服务监听程序的一些过程! 大家都知道,通过nodejs可以对前台请求进行监听,这里就放一个官网的hello world例子吧: var http = require('http'); http.createServer(

一个简单的KVO例子

一个简单的KVO例子. 两个界面,第一个界面显示名字和配偶(spouse)名字,第二个界面显示修改名字和配偶名字,返回时,将看到第一个界面的名字显示发生改变. 首先定义一个person类作为model. #import <Foundation/Foundation.h> @interface Person : NSObject @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) NSString

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的.然后如果这段时间线程B拿到锁Y,也sleep()一段时间的话,那么等到两个线程都醒过来的话,那么将互相等待对方释放锁资源而僵持下去,陷入死锁.flag的作用就是让A和B获得不同的锁. public class TestDeadLock { public void run() { MyThread mt = new MyThread(); ne

编写一个简单的jdbc例子程序

1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class Base { 10 11 public static void main(String[] args) th

一个简单的小例子让你明白c#中的委托-终于懂了!

模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事件委托给多个嘉宾去处理.因此在Host 类定义事件,在Guests类中定义事件的响应方法.通过多番委托的"+="将响应方法添加到事件列表中,最终 Host 类将触发这个事件.实现过程如下: 代码其实很少下面贴出来所有代码: QuestionArgs.cs view plaincopy to

转:实现一个简单的服务端推送方案

原文来自于:http://blog.csdn.net/jiao_fuyou/article/details/17090355 客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling:如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling. 注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹. 先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示: Polling 因为服务端

1.Windows服务--&gt;添加一个简单的服务

Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合.它没有用户界面,并且也不会产生任何可视输出.任何用户消息都会被 写进Windows事件日志.计算机启动时,服务会自动开始运行.它们不要用户一定登录才运行,它们能在包括这个系统内的任何用户环境下运行.通过服务控 制管理器,Windows服务是可控的,可以终止.暂停及当需要时启动. 1.新建一个Windows服务项目 2.系统自动创建了一个Service1.cs的文件,双击打开Service1.cs文件,在工作区域右键

Android一个简单的警告框,带标题、图标、按钮的代码

工作之余,将内容过程比较常用的内容做个珍藏,下面内容是关于Android一个简单的警告框,带标题.图标.按钮的内容,应该是对大伙有些用. AlertDialog alertDialog = new AlertDialog.Builder(this).create();alertDialog.setTitle("Title");alertDialog.setMessage("Message");alertDialog.setButton("OK",