转于:http://blog.csdn.net/huutu/article/details/12977645

------------------------------------------------------------------------------------------------------------------

Android Service ,在退出程序之后 ,仍然留在后台作为服务项做一些事情,比如说监听用户输入之类的。。。。

这里用来做后台的消息推送,像游戏中的广告可以这么做。

Android工程里面有两个Activity、一个Service重写。

MainActivity 是进入游戏的界面。

SecondActivity 是打开通知,点击推送的消息打开的Activity 。

push_service 是重写的Service 。

MainActivity

[java] view plain copy
  1. packagecom.example.androidnotification;
  2. importandroid.os.Bundle;
  3. importandroid.R.integer;
  4. importandroid.app.Activity;
  5. importandroid.app.Notification;
  6. importandroid.app.NotificationManager;
  7. importandroid.app.PendingIntent;
  8. importandroid.content.Context;
  9. importandroid.content.Intent;
  10. importandroid.util.Log;
  11. importandroid.view.Menu;
  12. importandroid.view.View;
  13. importandroid.view.View.OnClickListener;
  14. importandroid.widget.Button;
  15. publicclassMainActivityextendsActivity{
  16. privateButtonbutton1;
  17. privateButtonbutton2;
  18. @Override
  19. protectedvoidonCreate(BundlesavedInstanceState){
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_main);
  22. //获取到通知管理器
  23. NotificationManagermNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
  24. //定义内容
  25. intnotificationIcon=R.drawable.icon;
  26. CharSequencenotificationTitle="测试通知栏--title";
  27. longwhen=System.currentTimeMillis();
  28. Notificationnotification=newNotification(notificationIcon,notificationTitle,when);
  29. notification.defaults=Notification.DEFAULT_ALL;
  30. Intentintent=newIntent(MainActivity.this,SecondActivity.class);
  31. PendingIntentpendingIntent=PendingIntent.getActivity(MainActivity.this,0,intent,0);
  32. notification.setLatestEventInfo(this,"测试展开title","测试展开内容",pendingIntent);
  33. if(notification!=null)
  34. {
  35. Log.e("notifacation","notifacationisok");
  36. mNotificationManager.notify(1000,notification);
  37. }
  38. button1=(Button)findViewById(R.id.button1);
  39. button1.setOnClickListener(newOnClickListener(){
  40. @Override
  41. publicvoidonClick(Viewarg0){
  42. //TODOAuto-generatedmethodstub
  43. IntentpushIntent=newIntent("com.example.androidnotification.push_service");
  44. startService(pushIntent);
  45. }
  46. });
  47. button2=(Button)findViewById(R.id.button2);
  48. button2.setOnClickListener(newOnClickListener(){
  49. @Override
  50. publicvoidonClick(Viewv){
  51. //TODOAuto-generatedmethodstub
  52. MainActivity.this.finish();
  53. }
  54. });
  55. }
  56. @Override
  57. publicbooleanonCreateOptionsMenu(Menumenu){
  58. //Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
  59. getMenuInflater().inflate(R.menu.main,menu);
  60. returntrue;
  61. }
  62. }

打开程序的时候发送了一个通知。。。

主要就是获取到通知管理器然后新建一个通知,然后发送这个通知!。。。

SecondActivity

[java] view plain copy
  1. packagecom.example.androidnotification;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassSecondActivityextendsActivity{
  5. @Override
  6. protectedvoidonCreate(BundlesavedInstanceState)
  7. {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.secondactivity);
  10. }
  11. }

第二个Activity只是为了存在而存在,没有啥不懂。。

push_service

重写了Service ,注册一个Service 。。

[java] view plain copy
  1. packagecom.example.androidnotification;
  2. importandroid.app.Activity;
  3. importandroid.app.Notification;
  4. importandroid.app.NotificationManager;
  5. importandroid.app.PendingIntent;
  6. importandroid.app.Service;
  7. importandroid.content.Context;
  8. importandroid.content.Intent;
  9. importandroid.os.Handler;
  10. importandroid.os.IBinder;
  11. importandroid.util.Log;
  12. publicclasspush_serviceextendsService{
  13. @Override
  14. publicIBinderonBind(Intentarg0){
  15. //TODOAuto-generatedmethodstub
  16. returnnull;
  17. }
  18. @Override
  19. publicvoidonCreate()
  20. {
  21. super.onCreate();
  22. Log.i("push_service","push_serviceonCreate");
  23. }
  24. @SuppressWarnings("deprecation")
  25. @Override
  26. publicvoidonStart(Intentintent,intstartId)
  27. {
  28. super.onStart(intent,startId);
  29. Log.i("push_service","push_servicestart");
  30. newThread(newRunnable(){
  31. @Override
  32. publicvoidrun(){
  33. //TODOAuto-generatedmethodstub
  34. try{
  35. for(inti=0;i<100;i++){
  36. Thread.sleep(3000);
  37. Log.i("push_service","push_serviceforeach");
  38. //获取到通知管理器
  39. NotificationManagermNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
  40. //定义内容
  41. intnotificationIcon=R.drawable.icon;
  42. CharSequencenotificationTitle="测试通知栏--title";
  43. longwhen=System.currentTimeMillis();
  44. Notificationnotification=newNotification(notificationIcon,notificationTitle,when);
  45. notification.defaults=Notification.DEFAULT_ALL;
  46. Intentintent=newIntent(getApplicationContext(),SecondActivity.class);
  47. PendingIntentpendingIntent=PendingIntent.getActivity(getApplicationContext(),0,intent,0);
  48. notification.setLatestEventInfo(getApplicationContext(),"测试展开title","测试展开内容",pendingIntent);
  49. if(notification!=null)
  50. {
  51. Log.e("notifacation","notifacationisok");
  52. mNotificationManager.notify(1000+i,notification);
  53. }
  54. }
  55. }catch(InterruptedExceptione){
  56. //TODOAuto-generatedcatchblock
  57. e.printStackTrace();
  58. }
  59. }
  60. }).start();
  61. }
  62. @Override
  63. publicvoidonDestroy()
  64. {
  65. super.onDestroy();
  66. Log.i("push_service","push_servicedestroy");
  67. }
  68. }

嗯,把发送通知的代码复制到这里循环几百次。。用来测试退出程序后服务是不是还在跑着。

更多相关文章

  1. Android自动化测试之MonkeyRunner之MonkeyRunner(九)
  2. Android单元测试Unable to find instrumentation target package
  3. Android之Notification
  4. Android(安卓)CTS(兼容性测试)
  5. Android(安卓)状态栏通知Notification
  6. Android测试原理(二)
  7. android测试器
  8. android的单元测试摘要
  9. 拦截短信,不让系统发通知

随机推荐

  1. 记一次三元表达式的坑(避免采坑)
  2. 单例模式的十种写法,你会几个?(重写版)
  3. Android之相机的使用
  4. 使用adb sideload 本地OTA升级Nexus 5(An
  5. Android之view虚线
  6. CopyOnWriteArrayList,一个面试中经常问
  7. 面试官:如何分库分表?
  8. StampedLock如何使用?
  9. 【移动开发】 Android隐藏输入法软键盘的
  10. PriorityQueue:一个提升你刷题效率和解决