我是一个学生,写一些应用程序来理解和研究Android开发。我正在尝试编写一个应用程序,应该像这样工作:
MapActivity:
显示一个地图与用户的位置和开放访问点在一个范围内。用户和AP位置应由"MainClass“接收。
MainClass:
这应该是主要的工作。它应该获得用户位置,从db获得开放访问点,并插入到通过WifiManager扫描找到的db新的开放AP中。
现在,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();
}
}
START_STICKY是呼叫onStartCommand还是onCreate?
发布于 2017-05-20 03:55:01
回答:您应该在后台线程(新线程)上执行,因为android不允许用户界面线程上的网络任务,如果您对UI线程执行时间操作,UI将冻结。
回答:,正如您清楚地说您的需求(MainClass应该在后台工作),您需要使用服务,因为即使您的应用程序被杀死,服务也在后台运行。
发布于 2017-05-20 04:04:57
如果您想在前台运行MainClass.java内容,可以使用MVP模式。你应该把你的东西放到表示层。
发布于 2017-05-20 04:21:03
背景服务将是您的需求的最佳和唯一的解决方案,我想。因为你希望你的操作继续运行,即使你的应用程序已经关闭。
https://stackoverflow.com/questions/44085436
复制