50.android服务service-AIDL示例

本文介绍了一个应用程序(app1)如何通过定义服务并暴露接口,使得另一个应用程序(app2)能够调用该服务中的方法。具体包括app1中服务的定义、接口声明及其实现,以及app2中如何绑定服务并调用其方法。

app2调用app1的服务里面的方法

app1:

清单文件

        <service android:name="com.ldw.alipay.payService">
            <intent-filter >
                <action android:name="com.ldw.pay"/>
            </intent-filter>
        </service>

payService.java

package com.ldw.alipay;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;

import com.ldw.alipay.publicbusiness.Stub;

public class payService extends Service {

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return new zhongjian();
	}
	
	class zhongjian extends Stub{

		@Override
		public void pay() throws RemoteException {
			// TODO Auto-generated method stub
			//调用服务的pay方法
			payService.this.pay();
		}
		
	}
	
	public void pay(){
		System.out.println("pay支付");
	}

}

publicbusiness.aidl

package com.ldw.alipay;

interface publicbusiness {
	void pay();
}

app2

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="支付" 
        android:onClick="click"
        />

</RelativeLayout>

MainActivity.java

package com.ldw.usepay;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.view.View;

import com.ldw.alipay.publicbusiness;
import com.ldw.alipay.publicbusiness.Stub;

public class MainActivity extends Activity {

	publicbusiness pb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = new Intent();
        intent.setAction("com.ldw.pay");
        //这次用匿名的内部类来实现
        bindService(intent, new ServiceConnection(){

			@Override
			public void onServiceConnected(ComponentName name, IBinder service) {
				// TODO Auto-generated method stub
				pb = Stub.asInterface(service);
			}

			@Override
			public void onServiceDisconnected(ComponentName name) {
				// TODO Auto-generated method stub
				
			}
        	
        }, BIND_AUTO_CREATE);
    }

    //调用远程服务的支付方法
    public void click(View v){
	   try {
		pb.pay();
	} catch (RemoteException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
    }
    
}


"02-26 05:15:44.363 1000 1553 1553 D SECURE-PROCESSOR: Starting qti-tee AIDL service instance 02-26 05:15:44.367 1000 1553 1553 W vendor.qti.hardware.secureprocessor: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.secureprocessor.device.ISecureProcessor/qti-tee 02-26 05:15:44.367 1000 1553 1553 D SECURE-PROCESSOR: register qti-tee AIDL service instance 0 02-26 05:15:44.369 1000 1553 1553 W vendor.qti.hardware.secureprocessor: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.secureprocessor.device.ISecureProcessor/qti-tvm 02-26 05:15:44.369 1000 1553 1553 D SECURE-PROCESSOR: register qti-tvm AIDL service instance 0 02-26 05:15:44.369 1000 1553 1553 I SECURE-PROCESSOR: Seccam AIDL Service Ready 02-26 05:15:44.370 1000 1558 1558 D trustedui-aidl-service-qti: TrustedUI AIDL service starting... 02-26 05:15:44.371 1000 1547 1547 W vendor.qti.hardware.display.color-service: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.display.color.IDisplayColor/default 02-26 05:15:44.372 1000 1547 1547 W vendor.qti.hardware.display.color-service: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.display.postproc.IDisplayPostproc/default 02-26 05:15:44.372 1000 1547 1547 I vendor.qti.hardware.display.color-service: IDisplayColor service starts to join service pool 02-26 05:15:44.377 1000 1558 1558 W vendor.qti.hardware.trustedui-aidl-service-qti: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.trustedui.ITrustedUI/default 02-26 05:15:44.379 1000 1558 1558 W vendor.qti.hardware.trustedui-aidl-service-qti: Thread Pool max thread count is 0. Cannot cache binder as linkToDeath cannot be implemented. serviceName: vendor.qti.hardware.trustedui.ITrustedInput/default"
09-13
Matlab基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率内容概要:本文围绕Matlab在电力系统优化与控制领域的应用展开,重点介绍了基于粒子群优化算法(PSO)和鲁棒MPPT控制器提升光伏并网效率的技术方案。通过Matlab代码实现,结合智能优化算法与先进控制策略,对光伏发电系统的最大功率点跟踪进行优化,有效提高了系统在不同光照条件下的能量转换效率和并网稳定性。同时,文档还涵盖了多种电力系统应用场景,如微电网调度、储能配置、鲁棒控制等,展示了Matlab在科研复现与工程仿真中的强大能力。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事新能源系统开发的工程师;尤其适合关注光伏并网技术、智能优化算法应用与MPPT控制策略研究的专业人士。; 使用场景及目标:①利用粒子群算法优化光伏系统MPPT控制器参数,提升动态响应速度与稳态精度;②研究鲁棒控制策略在光伏并网系统中的抗干扰能力;③复现已发表的高水平论文(如EI、SCI)中的仿真案例,支撑科研项目与学术写作。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注算法实现细节与系统参数设置,同时参考链接中的完整资源下载以获取更多复现实例,加深对优化算法与控制系统设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值