簡體   English   中英

Android-使用多個線程執行不同的功能

[英]Android - executing different functions with multiple threads

我對Android編程很陌生,但是在其他語言方面也有一些經驗。 我想創建一個原理如此的APP。

在此處輸入圖片說明

  1. APP是一個進程,每隔10秒詢問我的Web /數據庫服務器是否有事件要執行。

  2. Web /數據庫服務器用事件ID甚至函數名稱回答。

  3. APP將打開一個新線程,該線程將使用id甚至直接使用函數名稱執行事件。

我的問題是:

  1. 這是個人嗎? 還是可以輕松應對這種崩潰?
  2. 是在進程中限制為2個線程,還是每次為要執行的功能創建新線程時都可以打開? 也許因為其他功能仍在運行?
  3. 如何使用返回值執行函數? 例如

    InputStream in = response.getEntity().getContent(); //Get the data in the entity

    public in(void) { // execute a function which got´s the same name as the variable "in" }

結果應該是:一個線程每10秒詢問我的Web- /數據庫服務器是否有事件。 該事件在線程內執行,並且正在並行工作(同時沒有崩潰或卡住)。

這些線程的示例代碼將不勝感激。

我的代碼至今:

公共類服務擴展了Service {private static final String TAG =“ MyService”;

 @Override public IBinder onBind(Intent intent) { return null; } public void onDestroy() { Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); Log.d(TAG, "onDestroy"); } @Override public int onStartCommand(Intent intent, int flags, int startid) { Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); Log.d(TAG, "onStart"); Thread thread = new Thread(new Runnable() { @Override public void run() { new Timer().scheduleAtFixedRate(new TimerTask() { @Override public void run() { System.out.println("Send GO!"); Device dev = new Device(); dev.getDeviceId(getBaseContext()); dev.getEmail(getBaseContext()); dev.sendDeviceItems(); } }, 0, 10000);//put here time 1000 milliseconds=1 second } }); thread.start(); return Service.START_STICKY; } } 
  1. 這是個人嗎? 還是可以輕松應對這種崩潰?
    • 是的,這會影響性能。 每10秒詢問一次api也將耗盡您的電池。
    • 有了適當的異常處理,它就不會輕易崩潰。

是在進程中限制為2個線程,還是每次為要執行的功能創建新線程時都可以打開? 也許因為其他功能仍在運行?

  • 您可以運行任意多個線程,但是很難維護其中的代碼
    案件 。 您可以將VOLLY或OKHTTP用於與網絡相關的事情,它們也會處理您的線程部分。

如何使用返回值執行函數? 例如

InputStream in = response.getEntity()。getContent(); //獲取實體中的數據

public in(void){//執行一個與變量“ in”同名的函數}

  • 為了在運行時使用方法名稱調用方法,您只能在Java中使用REFLECTION。 這將滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM