场景1 :lambda函数在执行时输出返回的值:
方案2 :执行时,lambda函数输出null
而不是返回值:
为什么执行lambda时不输出方案2中的返回值?
注意:方案1中的lambda将输出返回值,而不管body
属性是对象还是字符串。
答案 0 :(得分:0)
场景2的响应为 public class MainActivity extends AppCompatActivity {
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message inputMessage) {
System.out.println("Got msg!");
super.handleMessage(inputMessage);
}
};
netService = new HamNet();
netService.startNetwork(getApplicationContext(), mHandler);
}
private HamNet netService;
}
public class HamNet extends Service {
private Handler mainThreadHdlr;
public void startNetwork(Context context, Handler hdlr) {
Intent serviceIntent = new Intent(context,HamNet.class);
context.startForegroundService(serviceIntent);
mainThreadHdlr = hdlr;
assert mainThreadHdlr != null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.out.println("-=-=-=-=- onStartCommand()");
udpListener = new ArduinoUDPListener();
udpListener.start();
return START_STICKY;
}
private class ArduinoUDPListener extends Thread {
public void run() {
System.out.println("-=-=-=-=- ArduinoUDPListener.run()");
if (mainThreadHdlr != null) {
Message msg = mainThreadHdlr.obtainMessage();
msg.obj = update;
mainThreadHdlr.sendMessage(msg);
System.out.println("sent msg!");
} else {
System.out.println("null?");
}
}
}
private ArduinoUDPListener udpListener;
}
,因为exports.handler中缺少null
关键字。将其添加回去后,您将获得所需的响应