如何在android中运行并行操作?
如何在Android中对主应用程序运行并行操作如何在android中运行并行操作?,android,multithreading,android-asynctask,broadcastreceiver,Android,Multithreading,Android Asynctask,Broadcastreceiver,如何在Android中对主应用程序运行并行操作(进程) 我知道,有很多方法可以做到这一点:线程、任务、处理程序等等。。。 这是我选择的方式。但我认为它占用了大量内存,并且在中断调用中不会关闭 checkReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO: Check is this a
(进程)
我知道,有很多方法可以做到这一点:线程
、任务
、处理程序
等等。。。
这是我选择的方式。但我认为它占用了大量内存,并且在中断调用中不会关闭
checkReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: Check is this a good way to handle threads
Thread t = new Thread() {
@Override
public void run() {
internetConnectionManager.TryConnect();
this.interrupt();
}
};
t.start();
}
}
};
使用处理程序
若你们想停止处理程序,那个么向接收者发送一个带有某个值的意图,例如(“退出处理程序”)
然后调用remove callback,在处理程序内部,您可以使用ACTION开关处理其余部分
您还可以使用intentservice,因为您的arroach有两个问题:
- 不应在
方法中启动线程。原因如下:onreceive
- 其次,调用
在您的示例中没有任何意义,因为您的线程已经在该行完成并将完成,而且您也没有检查Thread.currentThread().interrupt()
标志interrupted
onReceive
代码开始一个简单的操作。一个简单的教程。重要编辑基于Funkthemank的评论:
如果广播来自警报或外部事件,则在
onReceive
返回后不久(即使您创建了服务),您的设备也可能进入睡眠状态。如果是这种情况,您应该从支持库扩展,而不是使用常规的BroadCastReceiver
。您的问题是什么?这个。中断将不会编译。我相信您的意思是调用类似于Thread.currentThread().interrupt()
的东西。另外,当找到TryConnect()
时,是否需要接收结果?不,我不需要结果。我只需要运行这个函数,我使用它来使用异步任务处理程序不是异步的,除非您有多个处理程序绑定到为不同线程创建的循环器。。发送到单个处理程序的消息一次只能处理一条,如果一条消息被阻塞,其余的消息将不得不等待。另外值得注意的是,如果广播来自报警或外部事件,则在onReceive返回后,您的设备可能会很快进入睡眠状态(即使您创建了线程或服务)-支持库中有一个助手类:我的广播确实来自alarm(manager)。那么我该怎么办呢?@FunkTheMonk我几乎一字不差地在我的回答中插入了你的评论,希望你不介意。感谢您指出这一点,我以前从未想过。在我的闹钟中,我使用RTC_WAKEUP,在这种情况下,我还需要WakefulBroadcastReceiver?@Alex让您的类实现parcelable很简单,然后您可以将对象放入意图并在服务中提取,这是正常的方式。或者,如果您的对象在逻辑上表示全局访问状态,或者可以将其设置为单例,则可以使所有组件都全局访问它。