2017-08-06 100 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

相關問題