我是android新手,我正在做一些可能会使用的应用程序 多线程。 例如,应用程序线程可能如下所示,假设为2 线程;
线程1 即使整个应用程序在前台线程上运行也应如此 在任何时候都听着特定的短信; 想象一下,当发送此消息时,截获的短信是“3456” 到手机然后第一个线程将被暂停 和线程2将被激活:
线程2 当线程被激活时,它将使用gps来跟踪位置 的电话,将使用smsManager的实例发回 手机的坐标(日志,纬度),甚至可能谷歌地图回来 发送消息“3456”然后线程1的电话 激活:
* *如何实现这一点?
答案 0 :(得分:8)
这个问题有两个答案。
如果您想长时间在后台运行一个帖子,要监听事件或运行常规流程,那么Services就可以了
如果您需要触发新线程进行一次处理然后停止,那么请查看AsyncTask,这是一种非常非常简单的方法,并且包含一种更新用户界面的简单方法在此过程中。
开发者文档包含一个关于location in Android
的精彩页面答案 1 :(得分:2)
查看服务。如果您在应用程序中使用服务,则不必对其进行明确编码。
http://developer.android.com/reference/android/app/Service.html
修改强>
回应评论,以下是我如何使用BroadcastReceiver进行从服务到活动的通信
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
}
类似的......