我指的是android设计注意事项:AsyncTask vs Service(IntentService?)
根据讨论,AsyncTask不适合,因为它与您的Activity紧密"绑定"
所以,我启动一个Thread(我假设AsyncTask和Thread属于同一类别),在其中有一个无限运行循环并进行了以下测试.
所以,我希望以后我是从改变Thread到Service,我Service会继续我即使活着退出或杀死我的应用程序.
Intent intent = new Intent(this, SyncWithCloudService.class);
startService(intent);
Run Code Online (Sandbox Code Playgroud)
public class SyncWithCloudService extends IntentService {
public SyncWithCloudService() {
super("SyncWithCloudService");
}
@Override
protected void onHandleIntent(Intent intent) {
int i = 0;
while (true) {
Log.i("CHEOK", "Service i is " + (i++));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Log.i("CHEOK", "", ex);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
// Doesn't matter whether I use "android:process" or not.
<service
android:name="com.xxx.xml.SyncWithCloudService"
android:process=".my_process" >
</service>
Run Code Online (Sandbox Code Playgroud)
但是,我的发现是,
似乎行为Service和Thread是一样的.那么,为什么我要用Service而不是Thread?有什么我错过了吗?Service即使在我杀了我的应用程序之后,我还以为我会继续运行?
Dav*_*ser 12
不.当您终止应用程序时,服务将停止运行.当你杀死你的应用程序时,它的所有组件都被杀死(活动,服务等).
通常,线程和服务的行为是类似的.但是,如果从Activity启动一个Thread然后关闭活动(即:退出你的应用程序),最终Android会注意到你的进程中没有活动组件(因为Android不能将你的Thread识别为活动组件)它会杀死你的进程,从而杀死线程.
但是,如果您正在运行服务,那么Android会注意到您正在运行服务而不是那么容易杀死它.但是,如果Android没有"正在使用",Android仍可能会终止您的服务流程.
| 归档时间: |
|
| 查看次数: |
14609 次 |
| 最近记录: |