Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >安卓最好使用AsyncTask,服务或其他

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

Stack Overflow用户
提问于 2017-05-20 03: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
运行
AI代码解释
复制
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 03:55:01

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

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

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

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

票数 0
EN

Stack Overflow用户

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

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

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

票数 0
EN

Stack Overflow用户

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

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

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

https://stackoverflow.com/questions/44085436

复制
相关文章
安卓开发_浅谈AsyncTask
现在就来学习一下AsyncTask。 一、先介绍一下AsyncTask:   在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。这样就解决了子线程更新UI的问题。但是费时的任务操作总会启动一些匿名的子线程,太多的子线程给
听着music睡
2018/05/18
1.7K0
安卓webview注入js修改网页文本或添加其他元素
webview不止可以加载网页,加载的同时,网页的任何元素我们都是可以修改的,隐藏、替换、插入新的html元素balabala,总之,webview的神奇给了我们很多发挥创意的可能:
安德玛
2022/03/09
4.4K0
安卓 toast_安卓toast使用
一个 toast 是在屏幕上弹出一条信息,它的大小总是包裹着需要显示的内容,并且当前的 Activity 依然是可见并且可互动的。toast会自动消失,并且不接受任何互动事件。因为 toast 可以在后台的 Service 中创建,所以即使这个应用程序没有显示在屏幕上,仍然可以弹出 toast.
全栈程序员站长
2022/10/01
6.5K0
安卓手机分享加密网络给其他设备使用,包括linux
之前的ss被墙了,舍不得60rmb换IP,于是找了一个其他的加速器,只能用他们的客户端连。毫无意外,他们不出linux的客户端,还好他们出安卓客户端,我手机也是安卓,就寻思用手机分享加密网络出来给电脑用。
黒之染
2019/07/02
2.1K0
安卓应用服务如何发送模拟按键或坐标给系统
在调试安卓代码的时候经常会用到input keyevent keycode来操作按键,确定按键功能是否正常。有时候也会在安卓应用服务里面发送按键给所有的应用或者发送坐标数据来模拟触摸,比如原车带触摸屏与机器通信,通过原车的触摸来控制机器的应用操作,这就需要在应用服务中调用接口函数来发送按键和坐标数据。
kaicer
2023/05/20
6920
安卓完美使用python
安卓完美使用python开发 所需linux环境搭建软件 Linux Deploy JuiceSSH ---- 两个比较好用的代码编辑器 QuickEdit(推荐使用这个) DroidEdit 下载地
py3study
2020/01/07
1.2K0
安卓完美使用python
安卓异步任务AsyncTask
       Android4.0之后,网络访问这些都是要放在自己开的线程里,然后在主线程里进行访问的。就我所知的有两种方法。一种是自己new一个线程,然后通过Handler机制进行访问;另外一种是用异步任务AsyncTask的方法。
SmileNicky
2019/01/17
5120
[android] 安卓进程优先级&为什么使用服务
应用程序:一组组件(activity service provider receiver)的集合
唯一Chat
2019/09/10
4690
安卓开发 OkHttp 使用
如果使用的是 android studio 的话,在 build.gradle 的 dependencies 里面添加
xlj
2022/04/03
1.7K0
安卓应用安全指南 4.4.1 创建/使用服务 示例代码
使用服务的风险和对策取决于服务的使用方式。 您可以通过下面展示的图表找出您应该创建的服务类型。 由于安全编码的最佳实践,根据服务的创建方式而有所不同,因此我们也将解释服务的实现。
ApacheCN_飞龙
2022/12/01
9510
安卓adb命令的使用
安装adb mac上安装adb brew cask install android-platform-tools 1.获取root命令 adb root adb disable-verity adb reboot #重启手机 adb root adb remount adb shell 至此进入安卓命令窗口。用户为root 2.上传、拉取文件 //上传文件到安卓里面 adb push platform.xml /system/etc/permissions/platform.
用户1437675
2019/03/15
3.2K0
安卓-碎片的使用入门
碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用得非常广泛。虽然碎片对你来说应该是个全新的概念,但我相信你学习起来应该毫不费力,因为它和活动实在是太像了,同样都能包含布局,同样都有自己的生命周期。你甚至可以将碎片理解成一个迷你型的活动,虽然这个迷你型的活动有可能和普通的活动是一样大的。
Fisherman渔夫
2020/02/19
1.4K0
安卓开发之SharedPreferences使用
Sharedpreferences保存数据类似配置信息格式的数据,使用简单类型的key-value对 主要方法有: Boolean contains(String key):判断是否包含特定的key的
苦咖啡
2018/05/08
1.3K0
安卓应用安全指南 4.4.2 创建/使用服务 规则书
仅在应用(或同一个 UID)中使用的服务必须设置为“私有”。 它避免了应用意外地从其他应用接收意图,并最终防止应用的功能被使用,或应用的行为变得异常。
ApacheCN_飞龙
2022/12/01
9720
安卓中使用圆角button
1、在drawable中建立btn_blue.xml 内容如下: <?xml version=”1.0″ encoding=”utf-8″?> <shape xmlns:android=”htt
苦咖啡
2018/05/08
1.1K0
安卓手机系统连接电视,最好的方案是什么?
现在,大部分人都用手机看视频。但是手机屏幕太小,不适合高清视频。电视看视频,才有更好的体验。
ruanyf
2020/06/22
5.2K0
PC最好的dsd播放软件_安卓的dsd播放软件
其实是Prism sound出的Sadie6….如果感觉难买的话可以试试hqplayer。
全栈程序员站长
2022/11/17
3.4K0
安卓依赖服务器 Nexus
Nexus 是一个基于 maven 的仓库管理的社区项目。主要的使用场景就是可以在局域网搭建一个 maven 私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。 通过 Docker 启动 $ docker run -d \ --name nexus \ -p 8081:8081 \ -v nexus-data:/nexus-data \ sonatype/nexus3 Android Studio 配置 项目 buid.g
康怀帅
2018/02/28
2.8K0
安卓应用安全指南 4.4.3 创建/使用服务高级话题
我们已经本指南中解释了如何在实现四种服务类型:私有服务,公共服务,伙伴服务和内部服务。 下表中定义了每种导出属性类型的许可设置,以及intent-filter元素的各种组合,它们AndroidManifest.xml文件中定义。 请验证导出属性和intent-filter元素与你尝试创建的服务的兼容性。
ApacheCN_飞龙
2022/12/01
9730
unicorn在安卓中使用
https://github.com/RikkaApps/Riru/releases
tea9
2023/03/08
9450

相似问题

安卓服务调用AsyncTask

13

AsyncTask崩溃安卓服务

43

安卓: AsyncTask vs服务

60

使用AsyncTask、安卓

24

安卓服务新增AsyncTask代码

218
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文