Android最好使用异步任务、服务或其他
我是一名学生,写一些应用程序来理解和研究Android开发。 我正在尝试编写一个应用程序,其工作原理如下:Android最好使用异步任务、服务或其他,android,multithreading,android-asynctask,android-service,android-broadcastreceiver,Android,Multithreading,Android Asynctask,Android Service,Android Broadcastreceiver,我是一名学生,写一些应用程序来理解和研究Android开发。 我正在尝试编写一个应用程序,其工作原理如下: public class MainService extends Service { Thread mainThread; @Override public void onCreate() { mainThread = new Thread(new Runnable() { @Override publ
public class MainService extends Service {
Thread mainThread;
@Override
public void onCreate() {
mainThread = new Thread(new Runnable() {
@Override
public void run() {
....
mainOperation();
....
}
});
mainThread.setPriority(Process.THREAD_PRIORITY_BACKGROUND);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
mainThread.run();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
}
}
地图活动:
显示一张地图,其中包含用户位置和范围内的开放接入点。
“MainClass”应接收用户和AP位置
主要类别:
这应该是主要的工作。它应该获得用户位置,从db获得开放访问点,并将WifiManager扫描发现的新开放AP插入db
现在,MainClass应该在后台工作,在用户同意的情况下,即使应用程序关闭
我的问题是:
public class MainService extends Service {
Thread mainThread;
@Override
public void onCreate() {
mainThread = new Thread(new Runnable() {
@Override
public void run() {
....
mainOperation();
....
}
});
mainThread.setPriority(Process.THREAD_PRIORITY_BACKGROUND);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
mainThread.run();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
}
}
是在kill调用onStartCommand还是onCreate时启动
若你们想在前台运行MainClass.java,你们可以使用MVP模式。你应该把你的东西放到展示层 我想后台服务将是满足您需求的最佳且唯一的解决方案。因为你希望你的操作即使在你的应用程序关闭时也能继续运行。回答得好,但更具体一点:我想他需要一个前台服务。因为即使应用程序关闭,它也必须运行。在Android doze模式下,没有其他选项可以完成此操作(据我所知)。@jobbert,有一个选项可以使用MVP模式完成此案例。@jobbert您是对的。如果OP不想让服务在操作系统的突发奇想下被终止,那么前台服务就是他们所需要的。那么,我应该使用service还是IntentService?如果我是对的:在UI线程上运行服务,但在中使用startForeground()时,服务会在新线程上运行吗?IntentService有自己的线程,所以它与我需要的线程非常相似?它们会被操作系统杀死吗?如果是,如何重新启动?啊,你需要一个在前台启动的正常服务。否则,Android将杀死后台的资源以防止电池丢失。当你想在后台得到一些大的东西而不是你现在需要的东西时,就使用意图服务。有了这些信息,您应该能够在Google/上搜索所有内容,从而使其正常工作@Silambarasan Ponguti,我不是说如何从服务中获取信息。