IntentService调用AsyncTask的问题

2023-11-26

我创造了IntentService课堂和表演asyncTask但出现异常时onPreExecute()在此代码行调用pDialog.show();

AsyncHandlerService类---

public class AsyncHandlerService extends IntentService{
ProgressDialog pDialog;
HttpPost post;
HttpResponse response;
Context ctx;

public AsyncHandlerService() {
    super("AsyncHandlerService");
    ctx = this;
}

@Override
protected void onHandleIntent(Intent intent) {
    new LoadDeviceInfo().execute();   
}


class LoadDeviceInfo extends AsyncTask<String, String, String> {

@Override
protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(ctx);
    pDialog.setMessage("Updating device info...");
    pDialog.setIndeterminate(false);
    pDialog.setCancelable(false);
    pDialog.show(); //Exception here..
}

protected String doInBackground(String... args) {
}

protected void onPostExecute(String file_url) {
    pDialog.dismiss();
}

UPDATE:

我正在打电话IntentService在具有意图过滤器的广播接收器中android.intent.action.PACKAGE_REPLACED在 android 清单中定义。代码 - -

public class OnUpgradeBroadcastReceiver extends BroadcastReceiver {
Context activity;
@Override
    public void onReceive(final Context context, final Intent intent) {
         activity = context;
         Intent msgIntent = new Intent(activity, AsyncHandlerService.class);
            activity.startService(msgIntent);
    }
}

错误日志:

com.testapp.main fatal error : Unable to add window -- 
token null is not for an application
android.view.WindowManager$BadTokenException: Unable to add window -- 
token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:588)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
at android.view.WindowManagerImpl$CompatModeWrapper.
addView(WindowManagerImpl.java:149)
at android.app.Dialog.show(Dialog.java:277)
at com.testapp.main.AsyncHandlerService$LoadDeviceInfo.
onPreExecute(AsyncHandlerService.java:62)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
at android.os.AsyncTask.execute(AsyncTask.java:534)

First, IntentService已经使用后台线程。你不需要another后台线程。做需要在后台完成的工作onHandleIntent().

Second, a Service无法显示Dialog。相反,让应用程序的 UI 层知道工作是通过事件总线上的消息完成的(例如,LocalBroadcastManager、greenrobot 的 EventBus、Square 的 Otto)。如果 UI 层不处理该事件,您的服务可以引发Notification或者以其他方式让用户了解已完成的工作(如果需要)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IntentService调用AsyncTask的问题 的相关文章

  • 使用新语法应用 Android Gradle 插件

    如何使用新的 Gradle 插件语法应用 Android 插件 plugins id version 代替 buildscript dependencies classpath com android tools build gradle
  • Flutter 中的 AndroidManifest 中缺少默认通知通道元数据

    我在用firebase messaging 5 0 1软件包来实现推送通知 在 IOS 中一切正常 而在 Android 中 当我的移动应用程序在后台运行时 我收到通知 但它没有导航到相应的屏幕 它只是打开默认屏幕 如何实现到该特定屏幕的导
  • 使用一个 apk 安装两个应用程序

    我有 2 个应用程序 1 内容提供者 2 使用此 ContentProvider 的应用程序 我需要使用单个 apk 文件安装这 2 个应用程序 我想在 Eclipse 中同时推送这两个应用程序 如果我将另一个项目添加到一个应用程序的构建路
  • 从历史堆栈中删除活动

    我的应用程序在用户第一次运行应用程序时显示注册活动 如下所示 活动启动画面 欢迎来到游戏 注册帐户 ActivitySplashScreenSignUp 很好 填写此信息 ActivityGameMain 游戏主屏幕 因此 当用户单击每个屏
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • Android:使 Dialog 周围的所有内容都比默认值更暗

    我有一个具有以下样式的自定义对话框 它显示了一个无边框对话框 后面的任何内容都会 稍微 变暗 我的设计师希望背后的一切都比 Android 的默认设置更暗 但不是完全黑色 有这样的设置吗 我能想到的唯一解决方法是使用全屏活动而不是对话框 只
  • 使用 Android Studio 进行调试永远停留在“等待调试器”状态

    UPDATE The supposed重复是一个关于陷入 等待调试器 执行时Run 而这个问题就陷入了 等待调试器 执行时Debug 产生问题的步骤不同 解决方案也不同 每当我尝试使用Android Studio的调试功能时 运行状态总是停
  • Emma 不生成coverage.ec

    我设置了艾玛 它曾经对我有用 然后我们更改了源代码 现在它没有生成coverage ec根本不 它确实生成coverage em 测试临近结束时 出现错误消息 exec INSTRUMENTATION CODE 0 echo Downloa
  • android中listview显示数据库中的数据

    我是安卓新手 我想知道如何在列表视图中显示数据库中的数据 它不会向数据库添加数据 我只是显示我们存储在数据库中的任何内容 请帮助我实现这一目标 提前致谢 使用这些课程可能会对您有所帮助 用于数据库创建 package com example
  • android textview 有字符限制吗?

    我正在尝试在 android TextView 中输入超过 2000 3000 个字符 它不显示任何内容 任何一份指南是否对 android textview 有字符限制或什么 我在G3中做了一些小测试 我发现 如果activtiy布局中有
  • 即使 Android M 上的移动数据已打开(有连接),也可以通过 WiFi(无连接)发送请求

    我必须在没有互联网连接的情况下将 UDP 数据包发送到 WiFi 模块 配有自己的 AP 但是当我将手机连接到 AP 时 Android 会在移动数据接口上重定向我的数据包 因为它有互联网连接 我使用下面的代码来完成我的工作 但它似乎不适用
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • 由于“进程崩溃”,仪器运行失败。

    我想运行以下测试 package com xxx yyy import android content Context import androidx test InstrumentationRegistry import androidx
  • 剪切评级栏中的图像

    我制作了自己的评级栏 花朵图像有 4 种尺寸 xdpi hdpi 等 从 24px24px 到 64x64px
  • Android Gradle 同步失败:无法解析配置“:classpath”的所有工件

    错误如下 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveException Could n
  • 如何在Android中创建一个简洁的两栏输入表单?

    我想创建一个整洁的两列输入表单 如下所示 到目前为止我的 xml 布局代码
  • 在 Android 手机中通过耳机插孔发送数据

    我目前正在处理一个新项目 我必须通过具有特定电压的耳机插孔发送数据 然后我可以在该电压上工作 所以这里我需要根据我的数据来编程具体电压 我是否可以在android中访问耳机的输出电压 然后创建一个应用程序来控制该电压 这是一篇讨论此问题的
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N

随机推荐

  • .gitignore 是否有版本控制文件的等效项?

    这个问题是related对以下问题 https stackoverflow com search q git 2Bassume unchanged然而 这些问题提供的答案似乎都不能满足我的需求 我有一个由 py thon 脚本生成的头文件
  • 是否可以使用 std::string 进行 read() ?

    是否可以使用 std string 进行 read 例子 std string data read fd data 42 通常 我们必须使用 char 但是否可以直接使用 std string 我不想创建 char 来存储结果 Thank
  • SQL IN 子句中的多列

    如果我们需要根据给定列的一组值来查询表 我们可以简单地使用 IN 子句 但是如果需要基于多列执行查询 我们就不能使用 IN 子句 在 SO 线程中 grep 从其他 SO 线程中 我们可以使用连接或存在子句等来规避这个问题 但是如果主表和搜
  • 正则表达式仅接受字母和空格,并且不允许在字符串的开头和结尾出现空格

    我对验证输入字段有以下要求 它应该只包含字母和字母之间的空格 字符串的开头或结尾不能包含空格 它不能包含任何其他特殊字符 我为此使用以下正则表达式 s a zA Z 但这在一开始就留出了空间 任何帮助表示赞赏 对我来说 唯一合乎逻辑的方法是
  • 如何解决android studio加载项目的问题?无法加载项目:java.lang.IllegalStateException:@NotNull 方法

    我尝试在 Android studio 中重新打开该项目 但它显示以下消息 无法加载项目 java lang IllegalStateException NotNull 方法 com intellij openapi progress Pr
  • 是否可以将一组图像作为数组导入? (创建反应应用程序项目)

    是否可以将一组图像作为数组导入 create react app 项目 像下面写的那样 但作为单行 import Hat1 from assets img accesories hats hat1 png import Hat2 from
  • Ext.isIE 在 IE 11 中返回 false

    当我尝试在 IE11 中使用 Ext isIE 时 返回值为 false 然后在调试我的代码期间 我发现出现以下错误 JavaScript 错误 消息 参数无效 我的 extjs 版本是 4 2 在 ExtJS 4 2 2 之前 IE 11
  • 共享内存和写时复制或右值引用和移动语义?

    通用容器 如 Qt 容器中的容器 的共享内存 写时复制实现是否被 C 11 移动语义和右值引用取代 一个失败而另一个成功的地方在哪里 或者它们是互补的而不是替代的 写入时复制和移动语义都已用于优化在堆上保存数据的对象的值语义 std str
  • 使用 NodeJS 将多个文件上传到 AWS S3

    我正在尝试使用 NodeJS 将目录中的所有文件上传到我的 S3 存储桶 如果我明确给出文件路径 文字字符串 我就可以一次上传一个文件Key field 下面是我正在使用的脚本 var AWS require aws sdk fs requ
  • MongoDB 排序日期字符串 (mm/dd/yyyy)

    我将日期存储为 mm dd yyyy 格式的字符串 我想按这个日期字段排序 我尝试了下面的查询 测试数据很少 db collection find sort date 1 pretty 并且工作正常 这是否可以正常工作 或者我应该将其转换为
  • 使用 css 选择所有块级元素

    有没有一种简单的方法可以使用 CSS 选择所有块级元素 我想在网站主要内容区域的所有块级元素之间设置 1 5 em 的边距 现在我有这样的代码 wrapper content p wrapper content ul wrapper con
  • 带请求正文的 Java HTTP DELETE

    我有一个外部 API 它使用 DELETE 和正文 JSON 我利用 Postman REST 客户端并通过请求正文完成删除 效果很好 我正在尝试使用一种方法自动化此功能 我尝试使用 HttpURLConnection 进行类似的 GET
  • Linux 中每个进程的最大线程数?

    Linux下一个进程最多可以创建多少个线程 如何 如果可能 修改该值 Linux 没有每个进程单独的线程限制 只是对系统上进程总数的限制 线程本质上只是 Linux 上具有共享地址空间的进程 您可以这样查看 cat proc sys ker
  • 在 `__enter__` 中返回除 `self` 以外的值是反模式吗?

    下列的这个相关问题 虽然总是有一些库以独特的方式使用语言功能的例子 但我想知道是否返回除self in an enter 方法应被视为反模式 在我看来 这似乎是一个坏主意的主要原因是它使包装上下文管理器出现问题 例如 在 Java 中 也可
  • 带最大化按钮的 Java 模式窗口

    如何创建一个模态窗口并具有最大化按钮 那么是否可以创建一个模态JFrame或创建一个JDialog带最大化按钮 在大多数外观和感觉上 模态窗口 例如JDialog 没有最大化按钮只是因为它们根本不应该被最大化 或最小化 可以通过一些技巧来添
  • 为什么main方法被标记为public?

    我有一个问题 为什么 main 方法被标记为public 根据 stackoverflow 上的答案 它被声明为static 该方法是静态的 因为否则会产生歧义 应该调用哪个构造函数 但是 任何人都可以解释为什么要声明它public alw
  • angular2:如何按条件手动添加css文件到index.html?

    下面的代码是样式的定义 我想按条件将以上文件添加到 src index html 中的 中 如何为每个设备应用一个 css 文件 如您所知 我无法在 index html 中使用 条件 代码 注意 我不会使用下面的方法 in angular
  • 为什么nodejs HTTP响应中不能写汉字?

    这是我的小代码 var http require http var port 9002 var host ip
  • 如何在不使用应用服务的应用设置的情况下保护Azure客户端ID和秘密

    我正在使用 Azure KeyVault 来存储我的数据库凭据 现在为了访问它 我在服务代码中硬编码了客户端 ID 和客户端密钥 我怎样才能避免这种硬编码 因为它不安全 1 I don t want to store client id a
  • IntentService调用AsyncTask的问题

    我创造了IntentService课堂和表演asyncTask但出现异常时onPreExecute 在此代码行调用pDialog show AsyncHandlerService类 public class AsyncHandlerServ