首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >安卓最好使用AsyncTask,服务或其他

安卓最好使用AsyncTask,服务或其他
EN

Stack Overflow用户
提问于 2017-05-20 11:39:59
回答 3查看 182关注 0票数 0

我是一个学生,写一些应用程序来理解和研究Android开发。我正在尝试编写一个应用程序,应该像这样工作:

MapActivity:

显示一个地图与用户的位置和开放访问点在一个范围内。用户和AP位置应由"MainClass“接收。

MainClass:

这应该是主要的工作。它应该获得用户位置,从db获得开放访问点,并插入到通过WifiManager扫描找到的db新的开放AP中。

现在,MainClass应该在用户同意的背景下工作,即使应用程序已经关闭。

我的问题是:

  1. 我应该在新线程或UI线程上执行MainClass操作吗?
  2. MainClass应该是AsyncTask、服务还是其他?请告诉我为什么。
  3. 扫描操作返回在注册接收器中执行的扫描。它是在UI线程上运行还是在新线程中运行?

提前谢谢。

最新情况;

所以,如果我没有搞砸你的意思,这个服务应该是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
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?

EN

回答 3

Stack Overflow用户

发布于 2017-05-20 11:55:01

  1. 我应该在新线程或UI线程上执行MainClass操作吗?

回答:您应该在后台线程(新线程)上执行,因为android不允许用户界面线程上的网络任务,如果您对UI线程执行时间操作,UI将冻结。

  1. MainClass应该是AsyncTask、服务还是其他?请告诉我为什么。

回答:,正如您清楚地说您的需求(MainClass应该在后台工作),您需要使用服务,因为即使您的应用程序被杀死,服务也在后台运行。

票数 0
EN

Stack Overflow用户

发布于 2017-05-20 12:04:57

  1. 您应该在后台线程中使用MainClass.java内容。即服务
  2. 服务将通过广播接收器触发数据。
  3. 广播接收机将向MapActivity.java发送数据。注册接收器的onReceive()方法总是在UI线程中运行。

如果您想在前台运行MainClass.java内容,可以使用MVP模式。你应该把你的东西放到表示层。

票数 0
EN

Stack Overflow用户

发布于 2017-05-20 12:21:03

背景服务将是您的需求的最佳和唯一的解决方案,我想。因为你希望你的操作继续运行,即使你的应用程序已经关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44085436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档