如何在android中创建多线程?

问题描述:

我是新来的android和我正在做一些应用程序可能会使用 多线程。 例如,应用程序线程可能会执行以下操作,假设线程为2 ;如何在android中创建多线程?

线程1 即使整个应用程序运行在前台线程上,也应该运行在任何时候都听取特定的短消息; 想象的要拦截的短信是“3456”时,发送 到手机这个消息,那么线程一个将被暂停 和线程2将被激活:

线程2 何时被激活线程,然后它会使用GPS追踪手机的位置 ,并将使用smsManager的实例发送回 的坐标(日志,经纬度)的手机,或者即使可能的谷歌地图回 到发送消息“3456”,然后线程的电话一个将被激活:激活:

* *如何使这发生任何想法?

看看服务。如果您在应用程序中使用服务,则很多情况下不必进行明确编码。

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

这个问题有两个答案。

  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