2017-08-06 96 views
-1

我正在开发一个项目,Arduino通过蓝牙向Android发送恒定数据流。数据传输率低于预期,我正在研究Arduino和Android计划以找到瓶颈,这就是我发现的。 我认为瓶颈在于android蓝牙服务和活动之间的沟通。我正在使用本地广播将数据从Service发送到Activity,并且我注意到,即使在Arduino停止发送数据之后,广播仍会继续进入Activity。正因为如此,我得出结论认为,瓶颈必须以我的蓝牙服务向活动发送数据的方式进行。首先,我使用的是广播管理器,然后我切换到本地广播管理器,看到一些改进,但没有什么突破性的。我想知道是否有人知道我可以将数据从Service发送到Activity的最快方式。Android最快可能的服务方式将数据发送到活动

回答

0

有很多方法。 我建议使用打算,因为它是很容易

public class SomeActivity extends Activity{ 
    private MyBroadcastReceiver receiver; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     receiver = new MyBroadcastReceiver(); 
     this.registerReceiver(receiver, new IntentFilter(MyBroadcastReceiver.ACTION)); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     this.unregisterReceiver(receiver); 
    } 

    private class MyBroadcastReceiver extends BroadcastReceiver{ 
     public static final String ACTION = "com.example.ACTION_SOMETHING" 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String test = intent.getStringExtra("dataToPass"); 
     } 
    } 
} 

发送到活动服务类

Intent intent = new Intent(); 
intent.setAction(SomeActivity.MyBroadcastReceiver.ACTION); 
intent.putExtra("dataToPass", test); 
context.sendBroadcast(intent); 
+0

谢谢你,是的,这可能会有所帮助。然而,我最终还是做了其他的事情。我在我的活动中启动了一个asyncTask,它不断地在我的类中调用一个方法来查看是否有可用的数据。这最终使我的表现提高了10倍以上。你认为我的方法有消极的一面吗? – Saik

相关问题