C# 安卓太多处理器会适得其反吗?
我正在做一个关于Xamarin的跨平台项目。 我提出了这个问题。我有一个TabActivity(包含4个框架(请求、信息、Fav、设置)。我还有一个TcpController,它只不过是一个包含大量异步任务的类。如果您查看以下方法:C# 安卓太多处理器会适得其反吗?,c#,android,tcp,xamarin,xamarin.android,C#,Android,Tcp,Xamarin,Xamarin.android,我正在做一个关于Xamarin的跨平台项目。 我提出了这个问题。我有一个TabActivity(包含4个框架(请求、信息、Fav、设置)。我还有一个TcpController,它只不过是一个包含大量异步任务的类。如果您查看以下方法: public async Task Read( ) { await socketListener.StartListeningAsync( port ); socketListener.ConnectionReceived += async ( se
public async Task Read( ) {
await socketListener.StartListeningAsync( port );
socketListener.ConnectionReceived += async ( sender, args ) => {
var client = args.SocketClient;
await Task.Delay( 2000 );
while (true) {
System.Console.WriteLine( "Testing.." );
//Read from the ReadStream property of the socket client to receive data
if (client.ReadStream.CanRead) {
await Task.Run( ( ) => client.ReadStream.ReadAsync( dataSet, 0, dataSet.Length ) );
netObj = networkObjectAdapter.ByteArrayToObject( dataSet );
if (netObj.command == NetworkCommand.RECEIVE_LIST) {
Message msg = new Message( );
msg.Obj = dataSet;
requestFragmentHandler.SendMessage( msg );
} else if (netObj.command == NetworkCommand.RECEIVE_VOTE_SONG) {
Message msg = new Message( );
msg.Obj = dataSet;
requestFragmentHandler.SendMessage( msg );
}
//other business logic
}
await args.SocketClient.DisconnectAsync( );
break;
}
};
}
正如您在if语句中所看到的,我使用RequestFragmentHandler在接收到某些内容时向其发送消息,尽管我不确定每个片段使用f.e.3处理程序对于Android架构是否有意义。如果让一组处理程序处理片段和Tcp控制器之间的通信是一个错误的系统决策,什么样的方法才是不阻塞UI的最佳方法?您可以添加更多信息来清除您试图归档的内容吗?是否可以为每个片段设置一个处理程序,以便与TcpController通信,或者是否有其他方法不会阻塞UI?您可以添加更多信息来清除您想要归档的内容吗是否正在尝试存档?是否可以为每个片段设置一个处理程序,以便与TcpController通信,或者是否有其他方法不会阻止UI?