Android 服务消息侦听

 1 package com.example.metrox.l15;
 2
 3 import android.app.Service;
 4 import android.content.Intent;
 5 import android.os.Binder;
 6 import android.os.IBinder;
 7
 8 public class MyService extends Service {
 9     private boolean isRun = false;
10     private String data = "服务默认信息";
11     public MyService() {
12     }
13
14     @Override
15     public IBinder onBind(Intent intent) {
16         return  new Binder();
17     }
18
19     public class Binder extends android.os.Binder{
20         public void setData(String data){
21             MyService.this.data = data;
22         }
23         public MyService getService(){
24             return MyService.this;
25         }
26     }
27
28     @Override
29     public int onStartCommand(Intent intent, int flags, int startId) {
30         System.out.println("服务已启动...");
31         data = intent.getStringExtra("data");
32
33         return super.onStartCommand(intent, flags, startId);
34     }
35
36     @Override
37     public void onCreate() {
38         super.onCreate();
39         System.out.println("服务已创建...");
40         isRun = true;
41         new Thread(){
42             @Override
43             public void run() {
44                 super.run();
45                 int i = 0;
46                 while (isRun){
47                     i++;
48                     String str = i+ data;
49                     System.out.println(str);
50                     if(callback != null){
51                          callback.OnDataChange(str);
52                     }
53                     try {
54                         sleep(1000);
55                     } catch (InterruptedException e) {
56                         e.printStackTrace();
57                     }
58                 }
59             }
60         }.start();
61     }
62
63     @Override
64     public void onDestroy() {
65         super.onDestroy();
66         isRun = false;
67         System.out.println("服务已消毁...");
68     }
69
70     public Callback callback = null;
71
72     public void setCallback(Callback callback) {
73         this.callback = callback;
74     }
75
76     public Callback getCallback() {
77         return callback;
78     }
79
80     public static interface Callback{
81         void OnDataChange(String data);
82     }
83 }
 1 package com.example.metrox.l15;
 2
 3 import android.content.ComponentName;
 4 import android.content.Intent;
 5 import android.content.ServiceConnection;
 6 import android.os.Handler;
 7 import android.os.IBinder;
 8 import android.os.Message;
 9 import android.provider.Settings;
10 import android.support.v7.app.AppCompatActivity;
11 import android.os.Bundle;
12 import android.view.View;
13 import android.widget.EditText;
14 import android.widget.Switch;
15 import android.widget.TextView;
16
17 public class MainActivity extends AppCompatActivity implements View.OnClickListener, ServiceConnection {
18     Intent intent;
19     EditText et;
20     TextView tv;
21     MyService.Binder binder = null;
22     private boolean  isBind = false;
23     private  boolean isRuning = false;
24     @Override
25     public void onClick(View view) {
26         switch(view.getId()){
27             case R.id.btnStartService:
28                 et = (EditText) findViewById(R.id.editText);
29                 intent.putExtra("data",et.getText().toString());
30                 startService(intent);
31                 isRuning = true;
32                 break;
33             case R.id.btnStopService:
34                 stopService(intent);
35                 break;
36             case R.id.btnBindService:
37                 bindService(intent,this,BIND_AUTO_CREATE);
38                 break;
39             case R.id.btnUnBindService:
40                 unbindService(this);
41                 break;
42             case R.id.btnSyncData:
43                 if(binder != null){
44                    binder.setData(et.getText().toString());
45                 }
46                 break;
47         }
48     }
49
50     @Override
51     protected void onCreate(Bundle savedInstanceState) {
52         super.onCreate(savedInstanceState);
53         setContentView(R.layout.activity_main);
54         tv = (TextView) findViewById(R.id.textView);
55         intent = new Intent(MainActivity.this,MyService.class);
56         findViewById(R.id.btnStartService).setOnClickListener(this);
57         findViewById(R.id.btnStopService).setOnClickListener(this);
58         findViewById(R.id.btnBindService).setOnClickListener(this);
59         findViewById(R.id.btnUnBindService).setOnClickListener(this);
60         findViewById(R.id.btnSyncData).setOnClickListener(this);
61     }
62
63     @Override
64     public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
65         System.out.println("服务已连接...");
66         binder = (MyService.Binder) iBinder;
67         binder.getService().setCallback(new MyService.Callback() {
68             @Override
69             public void OnDataChange(String data) {
70                   Message msg = new Message();
71                   Bundle b = new Bundle();
72                   b.putString("data",data);
73                   msg.setData(b);
74                   handler.sendMessage(msg);
75             }
76         });
77     }
78
79     @Override
80     public void onServiceDisconnected(ComponentName componentName) {
81         System.out.println("服务已断开...");
82     }
83
84     private Handler handler = new Handler(){
85         @Override
86         public void handleMessage(Message msg) {
87             super.handleMessage(msg);
88             tv.setText(msg.getData().getString("data"));
89         }
90     };
91 }
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.metrox.l15.MainActivity">
11
12     <TextView
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="Hello World!"
16         android:id="@+id/textView" />
17
18     <Button
19         android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21         android:text="停止服务"
22         android:id="@+id/btnStopService"
23         android:layout_marginTop="48dp"
24         android:longClickable="false"
25         android:layout_below="@+id/textView"
26         android:layout_centerHorizontal="true" />
27
28     <Button
29         android:layout_width="wrap_content"
30         android:layout_height="wrap_content"
31         android:text="启动服务"
32         android:id="@+id/btnStartService"
33         android:layout_alignTop="@+id/btnStopService"
34         android:layout_alignParentLeft="true"
35         android:layout_alignParentStart="true" />
36     <Button
37         android:layout_width="wrap_content"
38         android:layout_height="wrap_content"
39         android:text="解绑服务"
40         android:id="@+id/btnUnBindService"
41         android:longClickable="false"
42         android:layout_alignTop="@+id/btnBindService"
43         android:layout_alignLeft="@+id/btnStopService"
44         android:layout_alignStart="@+id/btnStopService" />
45
46     <Button
47         android:layout_width="wrap_content"
48         android:layout_height="wrap_content"
49         android:text="绑定服务"
50         android:id="@+id/btnBindService"
51         android:layout_centerVertical="true"
52         android:layout_alignParentLeft="true"
53         android:layout_alignParentStart="true" />
54
55     <EditText
56         android:layout_width="match_parent"
57         android:layout_height="wrap_content"
58         android:id="@+id/editText"
59         android:layout_above="@+id/btnStartService"
60         android:layout_alignParentLeft="true"
61         android:layout_alignParentStart="true"
62         android:text="默认数据" />
63
64     <Button
65         android:layout_width="wrap_content"
66         android:layout_height="wrap_content"
67         android:text="同步数据"
68         android:id="@+id/btnSyncData"
69         android:layout_alignParentBottom="true"
70         android:layout_alignParentLeft="true"
71         android:layout_alignParentStart="true"
72         android:layout_marginBottom="74dp" />
73 </RelativeLayout>
时间: 2024-10-22 19:47:12

Android 服务消息侦听的相关文章

用php模拟做服务端侦听端口

参考:http://www.cnblogs.com/thinksasa/archive/2013/02/26/2934206.html http://blog.csdn.net/alongken2005/article/details/8056910 socket_accept()是服务端接受客户端请求,一旦有一个客户端链接上来的话,则这个函数会返回一个新的socket资源,这个资源是与客户端通信的资源. socket_accept()是阻塞的,会一直卡在那里. 发现情况:一旦客户端断开链接了,

wcf 由 http 更改为 https 返回404,没有终结点在侦听可以接受消息的

首先wcf项目在使用http时是没问题的. WCF有http更改为https之后,返回 没有终结点在侦听可以接受消息 需要修改wcf服务端及客户端 服务端更改代码 <binding maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" > <security mode="Transport"> <transport clientCrede

Socket基础之-启动异步服务侦听

本文主要是以代码为主..NET技术交流群 199281001 .欢迎加入. //通知一个或多个正在等待的线程已发生事件. ManualResetEvent manager = new ManualResetEvent(false); 1 //负责监听的套接字 private Socket socketServer; 2 /// <summary> 3 /// 启动服务 4 /// </summary> 5 private void CreateSocketService() 6 {

没有终结点在侦听可以接受消息的 XXXXXX 这通常是由于不正确的地址或者 SOAP 操作导致的

问题: 没有终结点在侦听可以接受消息的 http://192.168.1.176:50001/SomPatientsService.asmx.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. --------------------------- 異常 --------------------------- メッセージを受信できる http://192.168.1.176:50001/SomPatientsService.

没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService。这通常是由于不正确的

描述:启用工作流的单据,提交时提示,没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. 解决:因服务器 的 U9Mailservice_5.0和U9NotificationService_5.0未启动,启动即可.

Android Listener侦听的N种写法

Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用,其接口定义如下: [java] view plaincopyprint? public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was cli

Android开发之bindService()侦听service内部状态

在Android开发之bindService()通信的基础上,实现bindService()方法侦听service内部状态. 实现侦听service内部状态,使用的是回调机制 1.首先实现一个接口 1 public static interface CallBack{ 2 void onDataChange(String data); 3 } 2. 1 private CallBack callBack=null; 2 public void setCallBack(CallBack callB

没有终结点在侦听可以接受消息的...另外一种排错方式

没有终结点在侦听可以接受消息的 http://111.111.111.111:123456/AuthorityApi.asmx.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. 我上网查询,出现了很多,全部不相干. 郁闷之极之后..... 偶然发现用visual studio不能访问(Ctrl+点击链接),用chrome可以访问 一研究,发现,我的IE不知道为什么被加上了代理服务器. 去除代理服务器配置之后,就OK了. 在

没有终结点在侦听可以接受消息的 http://192.168.1.63:8085/LoginService。这通常是由于不正确的地址或者 SOAP 操作导致的

2016-04-08 09:15:05,581 [8] ERROR System.Threading.Thread - ErrorSystem.ServiceModel.EndpointNotFoundException: 没有终结点在侦听可以接受消息的 http://192.168.1.63:8085/LoginService.这通常是由于不正确的地址或者 SOAP 操作导致的.如果存在此情况,请参见 InnerException 以了解详细信息. ---> System.Net.WebExc