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:源自
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。