Service本地服务通信的问题

2019-03-26 12:37发布

本帖最后由 chenbingjy 于 2015-9-24 19:33 编辑


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
chenbingjy
1楼-- · 2019-03-26 19:26

在Manifest.xml文件中声明Service3,并配置<intent-filter.../>子标签,设置Action属性,代码如下:
<service android:name="Srvice3">
            <intent-filter >
                <action android:name="android.service"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </service>

在MainActivity中声明一个Intent对象用于标识目标Service,声明一个Service3.mIbind对象用于获取数据,声明ServiceConnection并实现其方法,
用于监听访问者与Service之间的连接情况,代码如下:
private Intent intent=new Intent();
        private Service3.mBinder binder;
        private ServiceConnection sConnection=new ServiceConnection(){
                public void onServiceDisconnected(ComponentName name){
                        System.out.println("--ServiceDisconnected--");
                }
                public void onServiceConnected(ComponentName name,IBinder service){
                        
                        System.out.println("--ServiceConnected--");
                binder=(Service3.mBinder)service;
                }
        };
chenbingjy
2楼-- · 2019-03-26 22:41
在MianActivity中,设置Intent所触发的Action字符串,声明3个Button控件并绑定监听,第一个用于启动Service,第二个用于停止Service,
第三个用于获取数据并使用Toast显示信息,代码如下:
setContentView(R.layout.activity_main);
                String ccb;
                intent.setAction("android.service");
               
                ccb=this.getPackageName();
                intent.setPackage(ccb);
                Button button1=(Button)findViewById(R.id.button1);
                button1.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                        
                                bindService(intent,sConnection,BIND_AUTO_CREATE);
                                
                        }
                });
                Button button2=(Button)findViewById(R.id.button2);
                button2.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                                unbindService(sConnection);
                        }
                });
                Button button3=(Button)findViewById(R.id.button3);
                button3.setOnClickListener(new OnClickListener(){
                        public void onClick(View v){
                                Toast.makeText(MainActivity.this,
                                                "Service的counter值为"+binder.getCounter(),
                                                Toast.LENGTH_LONG).show();
                        }
                });
chenbingjy
3楼-- · 2019-03-27 02:45
3.jpg 4.jpg 5.jpg 可是,我运行时点击第一个按钮,出错,见附件。请高手指教,怎么解决?谢谢!
ljj3166
4楼-- · 2019-03-27 07:00
完全不懂,帮顶
有空也学学
是谷歌的官方环境么?
chenbingjy
5楼-- · 2019-03-27 12:46
 精彩回答 2  元偷偷看……
574433742
6楼-- · 2019-03-27 16:49
 精彩回答 2  元偷偷看……

一周热门 更多>