java addcallback函数_Java Snackbar.addCallback方法代码示例

import android.support.design.widget.Snackbar; //导入方法依赖的package包/类

public void removeItemWithSnackbar(Activity activity, final int position, final SnackbarListener listener)

{

getSwipeManager().performFakeSwipe(mVHs.get(position), SwipeableItemConstants.RESULT_SWIPED_LEFT);

if (mChatroomObjects.get(position) != null)

{

final ChatroomRecyclerObject huehuehue = removeItem(position);

if (huehuehue != null)

{

final SharedPreferences mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(activity);

huehuehue.setIsPinned(false);

String chatroomName = huehuehue.getName();

String snackTextDel = "Deleted " + chatroomName;

final String snackTextRestore = "Chatroom restored!";

final SpannableStringBuilder snackTextDelSSB = new SpannableStringBuilder().append(snackTextDel);

final SpannableStringBuilder snackTextRestoreSSB = new SpannableStringBuilder().append(snackTextRestore);

if (mSharedPrefs.getBoolean("darkTheme", false))

{

snackTextDelSSB.setSpan(new ForegroundColorSpan(activity.getResources().getColor(R.color.colorDark)), 0, snackTextDel.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

snackTextRestoreSSB.setSpan(new ForegroundColorSpan(activity.getResources().getColor(R.color.colorDark)), 0, snackTextRestore.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

}

else

{

snackTextDelSSB.setSpan(new ForegroundColorSpan(activity.getResources().getColor(R.color.white)), 0, snackTextDel.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

snackTextRestoreSSB.setSpan(new ForegroundColorSpan(activity.getResources().getColor(R.color.white)), 0, snackTextRestore.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

}

final View parentLayout = activity.findViewById(android.R.id.content);

Snackbar snackbar = Snackbar

.make(parentLayout, snackTextDelSSB, Snackbar.LENGTH_LONG)

.setAction("UNDO", new View.OnClickListener()

{

@Override

public void onClick(View view)

{

Snackbar hue = Snackbar.make(parentLayout, snackTextRestoreSSB, Snackbar.LENGTH_SHORT);

if (mSharedPrefs.getBoolean("darkTheme", false))

{

hue.getView().setBackgroundColor(Color.WHITE);

}

hue.show();

addItem(huehuehue);

listener.onUndo();

}

});

if (mSharedPrefs.getBoolean("darkTheme", false))

{

snackbar.getView().setBackgroundColor(activity.getResources().getColor(R.color.white));

}

snackbar.show();

snackbar.addCallback(new BaseTransientBottomBar.BaseCallback()

{

@Override

public void onDismissed(Snackbar transientBottomBar, int event)

{

switch (event)

{

case DISMISS_EVENT_TIMEOUT:

listener.onUndoExpire(huehuehue.getUrl());

break;

}

}

});

}

}

}

Java 中实现 gRPC server Future.addCallBack 方式异步调用的步骤如下: 1. 定义 proto 文件,包括服务名和方法名,以及请求和响应的数据类型。 2. 根据 proto 文件生成 java 代码。 3. 编写实现服务方法的类。 4. 在服务端启动时注册服务方法。 5. 在客户端调用服务方法时,使用 Future 实例进行异步调用,并添加回调函数。 以下是一个简单的示例代码: ```protobuf syntax = "proto3"; package myservice; service MyService { rpc MyMethod(MyRequest) returns (MyResponse); } message MyRequest { string message = 1; } message MyResponse { string message = 1; } ``` 根据这个 proto 文件生成 java 代码: ``` $ protoc --java_out=. myservice.proto ``` 然后编写实现服务方法的类: ```java package mypackage; import mypackage.MyServiceGrpc.MyServiceImplBase; import mypackage.MyServiceOuterClass.MyRequest; import mypackage.MyServiceOuterClass.MyResponse; import io.grpc.stub.StreamObserver; public class MyServiceHandler extends MyServiceImplBase { @Override public void myMethod(MyRequest request, StreamObserver<MyResponse> responseObserver) { // 处理请求 String message = request.getMessage(); String responseMessage = "Hello, " + message; // 构造响应 MyResponse response = MyResponse.newBuilder() .setMessage(responseMessage) .build(); // 发送响应 responseObserver.onNext(response); responseObserver.onCompleted(); } } ``` 在服务端启动时注册服务方法: ```java package mypackage; import io.grpc.Server; import io.grpc.ServerBuilder; import java.io.IOException; public class MyServer { public static void main(String[] args) throws IOException, InterruptedException { int port = 50051; Server server = ServerBuilder.forPort(port) .addService(new MyServiceHandler()) .build(); System.out.println("Starting server..."); server.start(); System.out.println("Server started!"); server.awaitTermination(); } } ``` 在客户端调用服务方法时,使用 Future 实例进行异步调用,并添加回调函数: ```java package mypackage; import mypackage.MyServiceGrpc.MyServiceFutureStub; import mypackage.MyServiceOuterClass.MyRequest; import mypackage.MyServiceOuterClass.MyResponse; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import io.grpc.stub.StreamObserver; import java.util.concurrent.CompletableFuture; public class MyClient { public static void main(String[] args) throws Exception { String message = "World"; ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 50051) .usePlaintext() .build(); MyServiceFutureStub stub = MyServiceGrpc.newFutureStub(channel); CompletableFuture<MyResponse> future = stub.myMethod(MyRequest.newBuilder().setMessage(message).build()); future.addCallback(new CompletableFuture.Callback<MyResponse>() { @Override public void onSuccess(MyResponse response) { // 处理响应 String message = response.getMessage(); System.out.println("Received response: " + message); } @Override public void onFailure(Throwable t) { // 处理错误 System.err.println("Error: " + t.getMessage()); } }); // 阻塞等待结果 future.get(); } } ``` 以上就是 gRPC server Future.addCallBack 方式异步调用的 Java 实现步骤,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值