2011-04-01 96 views
1

我是新來的android和我正在做一些應用程序可能會使用 多線程。 例如,應用程序線程可能會執行以下操作,假設線程爲2 ;如何在android中創建多線程?

線程1 即使整個應用程序運行在前臺線程上,也應該運行在任何時候都聽取特定的短消息; 想象的要攔截的短信是「3456」時,發送 到手機這個消息,那麼線程一個將被暫停 和線程2將被激活:

線程2 何時被激活線程,然後它會使用GPS追蹤手機的位置 ,並將使用smsManager的實例發送回 的座標(日誌,經緯度)的手機,或者即使可能的谷歌地圖回 到發送消息「3456」,然後線程的電話一個將被激活:激活:

* *如何使這發生任何想法?

回答

2

看看服務。如果您在應用程序中使用服務,則很多情況下不必進行明確編碼。

http://developer.android.com/reference/android/app/Service.html

編輯

在迴應評論,這裏就是我如何使用廣播接收器

public class SomeActivity extends Activity { 

BroadcastReceiver receiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     // Example of pulling a string out of the Intent's "extras" 
     String msg = intent.getStringExtra("BroadcastString"); 

     // ...more stuff 

    } 
}; 


@Override 
public void onResume() 
{ 
    super.onResume(); 
    registerReceiver(receiver, new IntentFilter("SomeStringKeyForMyBroadcast")); 

    // ... other stuff 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    unregisterReceiver(receiver); 

    // ... other stuff 
} 

,並在我的服務做到從服務到活動通信...

public class SomeService extends Service { 

Intent broadcastIntent = new Intent("SomeStringKeyForMyBroadcast"); 

private void someWorkerMethodInMyService() 
{ 
     // ... other stuff 

     broadcastIntent.putExtra("BroadcastString", "Some Data"); 
     sendBroadcast(broadcastIntent); 

     // ... other stuff 
} 

類似的東西...

+0

THX的幫助:) – Mudasar 2011-04-01 18:19:26

+0

IAM但問題是,我不能找到該廣播接收機的註冊命令。 – Mudasar 2011-04-01 18:21:46

+0

我delcare我的BroadcastReceiver在我的活動,registerReceiver在onResume和unregisterReciever在onPause。在我的服務中,我傳遞了一個意圖來發送廣播。意圖是用相同的字符串鍵實例化的,因爲BroadcastReceiver是用 – Rich 2011-04-01 18:29:05

8

這個問題有兩個答案。

  1. 如果您想通過的很長一段時間在後臺運行一個線程,監聽事件或運行一個經常性進程,然後Services是去

  2. 如果需要觸發方式關閉一個新的線程來執行一次處理然後停止,然後查看AsyncTask,這是一個非常簡單的方法,並且包含一個簡單的方法來在過程中更新用戶界面。

開發者文檔包含一個優秀的網頁約location in Android

下面是使用在我添加了一個廣播接收機的一些服務information about receiving SMS in your app

+1

。這是爲了防止遺忘穿線嗎?例如,我通常使用服務(如您所建議的)或Handler/Runnable(如果我需要某個活動內聯的內容)。瞭解任何概述AsyncTask和Handler/Runnable之間差異的文章? – Rich 2011-04-01 18:26:50

+0

iam使用我添加廣播接收器的服務,但問題是我無法找到該廣播接收器的註冊命令。 – Mudasar 2011-04-01 18:27:08

+0

我更喜歡AsyncTask,因爲我覺得它非常乾淨和容易,但我認爲這只是您使用的偏好問題。 – 2011-04-01 18:32:43