android service 构造函数,Android IntentService无法实例化类;没有空构造函数

我有一个MainActivity类,需要访问在线API(因此使用网络资源)。这需要我在单独的文件HttpRequestService.java中创建的后台线程。

MainActivity.java:

public class MainActivity extends Activity {

public static final String API_KEY = "KEYKEYKEYKEYKEY";

public static final String CLIENT_ID = "IDIDIDIDIDIDID";

private final String BROADCAST_ACTION = "com.example.BROADCAST";

private final String EXTENDED_DATA_STATUS = "com.example.STATUS";

static final String LOGCAT_TAG = "TAGTAGTAGTAGTAG";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

protected void onResume() {

super.onResume();

String token = "TOKENTOKENTOKENTOKEN";

String urlString = "https://www.example.com/api?key=" + API_KEY;

// Create and start intent for HttpRequestService background thread.

Intent httpRequestServiceIntent = new Intent(this, HttpRequestService.class);

httpRequestServiceIntent.putExtra("token", token);

httpRequestServiceIntent.putExtra("urlString", urlString);

httpRequestServiceIntent.putExtra("client_id", CLIENT_ID);

DownloadStateReceiver downloadStateReceiver = new DownloadStateReceiver();

LocalBroadcastManager.getInstance(this).registerReceiver(downloadStateReceiver, new IntentFilter(BROADCAST_ACTION));

this.startService(httpRequestServiceIntent);

}

private class DownloadStateReceiver extends BroadcastReceiver {

// Broadcast receiver for receiving status updates from IntentService

private DownloadStateReceiver() {

// prevents instantiation

}

@Override

public void onReceive(Context context, Intent intent) {

String message = intent.getStringExtra(EXTENDED_DATA_STATUS);

Log.d(LOGCAT_TAG, "onReceive received message: " + message);

Toast.makeText(context, "Success!: " + message, Toast.LENGTH_LONG).show();

}

}

HttpRequestService.java:

public final class HttpRequestService extends IntentService {

public HttpRequestService(String name) {

super(name);

Log.e(LOGCAT_TAG, "You called the HttpRequestService directly. Don't do that. Call onHandleIntent.");

}

private final String LOGCAT_TAG = "HttpRequestService";

private final String BROADCAST_ACTION = "com.genda.dayplanner.BROADCAST";

private final String EXTENDED_DATA_STATUS = "com.genda.dayplanner.STATUS";

@Override

protected void onHandleIntent(Intent intent) {

// Gets data from the incoming Intent

String token = intent.getStringExtra("token");

String urlString = intent.getStringExtra("urlString");

String client_id = intent.getStringExtra("client_id");

Boolean extraError = false;

if (token == null) {

Log.e(LOGCAT_TAG, "Intent didn't contain required token.");

extraError = true;

}

if (urlString == null) {

Log.e(LOGCAT_TAG, "Intent didn't contain required urlBundle.");

extraError = true;

}

if (client_id == null) {

Log.e(LOGCAT_TAG, "Intent didn't contain required client_id.");

extraError = true;

}

if (extraError == true) {

// error response

}

// Now do request

URL url = null;

try {

url = new URL(urlString);

} catch (MalformedURLException e) {

Log.e(LOGCAT_TAG, "The URL for requesting the tasks API was malformed.");

}

HttpURLConnection conn = null;

try {

conn = (HttpURLConnection) url.openConnection();

} catch (IOException e) {

Log.e(LOGCAT_TAG, "Bad connection to the API URL");

}

conn.addRequestProperty("client_id", client_id);

conn.setRequestProperty("Authorization", "OAuth " + token);

String result = null;

try {

InputStream in = new BufferedInputStream(conn.getInputStream());

result = convertStreamToString(in);

} catch (IOException e) {

e.printStackTrace();

} finally {

conn.disconnect();

}

// Create new Intent with URI object

Intent localIntent = new Intent(BROADCAST_ACTION);

localIntent.putExtra(EXTENDED_DATA_STATUS, result);

// Broadcasts intent to receivers in this app.

LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);

}

public static String convertStreamToString(InputStream in) {

// Use BufferedReader.readLine() method. Iterate until BufferedReader returns null (no more data to read). Each line appended to StringBuilder.

BufferedReader reader = new BufferedReader(new InputStreamReader(in));

StringBuilder sb = new StringBuilder();

String line = null;

try {

while ((line = reader.readLine()) != null) {

sb.append(line + "\n");

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return sb.toString();

}

}

这是LogCat:

09-21 17:15:28.157: D/dalvikvm(11055): newInstance failed: no ()

09-21 17:15:28.157: D/AndroidRuntime(11055): Shutting down VM

09-21 17:15:28.157: W/dalvikvm(11055): threadid=1: thread exiting with uncaught exception (group=0x41f3b700)

09-21 17:15:28.167: E/AndroidRuntime(11055): FATAL EXCEPTION: main

09-21 17:15:28.167: E/AndroidRuntime(11055): java.lang.RuntimeException: Unable to instantiate service com.example.HttpRequestService: java.lang.InstantiationException: can't instantiate class com.example.HttpRequestService; no empty constructor

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2561)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.app.ActivityThread.access$1600(ActivityThread.java:141)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1338)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.os.Handler.dispatchMessage(Handler.java:99)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.os.Looper.loop(Looper.java:137)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.app.ActivityThread.main(ActivityThread.java:5103)

09-21 17:15:28.167: E/AndroidRuntime(11055): at java.lang.reflect.Method.invokeNative(Native Method)

09-21 17:15:28.167: E/AndroidRuntime(11055): at java.lang.reflect.Method.invoke(Method.java:525)

09-21 17:15:28.167: E/AndroidRuntime(11055): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)

09-21 17:15:28.167: E/AndroidRuntime(11055): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

09-21 17:15:28.167: E/AndroidRuntime(11055): at dalvik.system.NativeStart.main(Native Method)

09-21 17:15:28.167: E/AndroidRuntime(11055): Caused by: java.lang.InstantiationException: can't instantiate class com.example.HttpRequestService; no empty constructor

09-21 17:15:28.167: E/AndroidRuntime(11055): at java.lang.Class.newInstanceImpl(Native Method)

09-21 17:15:28.167: E/AndroidRuntime(11055): at java.lang.Class.newInstance(Class.java:1130)

09-21 17:15:28.167: E/AndroidRuntime(11055): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2558)

09-21 17:15:28.167: E/AndroidRuntime(11055): ... 10 more

我认为的重要部分是无法实例化类com.example.HttpRequestService;没有空构造函数。我已经看过类似的其他几个讨论,但是他们都能够解决问题,因为他们的类是他们的MainActivity的子类。所以他们只是让这个子类静态化,解决了这个问题。不幸的是,作为一个单独的类HttpRequestService不能是静态的。有什么建议么?

SAP ABAP BAPI_PRODORD_CHANGE:动态刷新PP主数据的实战解析 本文深入解析了在SAP ABAP开发中,如何利用BAPI_PRODORD_CHANGE函数实现生产订单PP主数据的动态刷新。针对CO02事务码无法满足的后台自动化场景,详细讲解了通过设置explosion_date和explode_new等关键参数来强制重新读取BOM和工艺路线的实战方法,并提供了核心代码示例与避坑指南,确保生产订单信息与最新主数据同步。 阅读详情

相关推荐

使用网分对晶体ESR/L1/C1/C0进行测量计算

Use R&S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M...

qq_39138630的博客 2083

Android(java)学习笔记60:继承中父类 没有无参构造

1. 继承中父类 没有无参构造: 1 package com.himi.test1; 2 3 /* 4 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 5 报错。 6 如何解决呢? 7 A:在父类中加一个无参构造方法 8 B:通过使用super关键字去显示的调用父类的带参构...

weixin_30765319的博客 173

无线充电效率从75%到90%+:深入拆解LCC补偿网络如何成为电动汽车和智能车竞赛的‘稳压器’

本文深入探讨了LCC补偿网络如何显著提升无线充电效率至90%以上,成为电动汽车和智能车竞赛中的关键技术。通过分析LCC的三元件结构和双模式切换特性,揭示了其在负载突变和线圈错位情况下的稳定性优势,并展示了实际应用中的效率提升和产业化挑战。

weixin_42528191的博客 397

android service newinstance failed no init ()

在Android中使用StartService来启动一个IntentService时,出现如下错误: android service newinstance failed no init () 10-29 10:09:06.093: D/MessageReceiver(7194): [onReceive] android.provider.Telephony.SMS...

weixin_34273481的博客 154

VScode远程连接开发嵌入式开发板

VScode远程连接开发调试嵌入式开发板

qq_53221728的博客 5891

AI应用架构师实战:高等教育智能课程推荐系统开发

性能:选课季并发量达1000QPS,推荐响应时间≤500ms(否则学生不耐烦)。数据隐私:符合《教育数据安全管理规范》,学生姓名、学号等敏感信息需匿名化存储。可扩展性:支持新增课程类型(如MOOC、实践课)、新增数据源(如竞赛获奖记录)。教育AI要“以教为中心”:不能纯技术驱动,要和教育工作者深度合作(如教师参与定义课程的前置关系)。数据是核心:数据质量决定推荐效果,要重视数据治理和隐私保护。持续迭代:教育需求是动态的(如每年新增课程、学生目标变化),要定期收集用户反馈,更新模型和策略。张三。

AI大模型应用之禅 1349

构造对象调用时缺少无参构造报java.lang.NoSuchMethodException: reflection.User.<init>()错误

Exception in thread "main" java.lang.InstantiationException: reflection.User at java.lang.Class.newInstance(Class.java:427) at reflection.Demo8.main(Demo8.java:21) Caused by: java.lang.NoSuchMethodException: reflection.User.() at java.lang.Class.g

qq_49014164的博客 1161

MMSegmentation 安装教程,避免mmcv不合适版本,及相关问题解决

都行,不做要求。

qq_43683133的博客 1220

关于缺少无参构造函数的报错信息

解决办法:com.wenshi.refundrate.entity.FxChannelReturnSaleRateVo.java这个类缺少无参构造 注:如果一个类写了有参构造,那么一定要写上无参构造。如果一个类没有写有参构造,那么无参构造可以不写。 类默认有无参构造,可以不写。 但是如果你写了有参构造就一定要写无参构造,要么两个都有,要么两个都没有(但是本质无参构造是有的) ...

a1073723609的博客 1358

基于FPGA的时间数字转换(TDC)设计(一:原理)

基于FPGA的时间数字转换(TDC)设计,此为第一篇

sdau2005的博客 5069

Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Mac 下 OpenClaw 安装全记录:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 安装教程 2.1 安装OpenClaw 2.2 配置模型 2.3 对话 3. 后续使用步骤 4. 关闭程序

weixin_43178406的博客 11万+

Activity缺少无参默认构造方法,产生实例化错误InstantiationException

Android 2.3.3 Eclipse Version: 3.7.0 LogCat   主要错误:   04-06 11:24:33.126: ERROR/AndroidRuntime(17173): Caused by: java.lang.InstantiationException: com.tmall.nokia.Iphone 04-06 11...

DebugLog的专栏 318

SAP Joule Studio 能不能用来开发 skill:可以,但它开发的是 Joule 语境下的企业级 skill,而不是替代所有 SAP 开发技术的万能锤

SAP Joule Studio 专为开发Joule技能(Joule skills)而设计,这些技能是执行确定性单步业务动作的原子能力。它通过自然语言接口连接SAP和非SAP系统,适合处理边界清晰、可审计的任务(如创建工单、查询发票)。Joule技能作为会话式业务编排层,与ABAP、CAP等核心技术互补而非替代。开发支持低代码和专业代码两种方式,并具备企业级治理能力,但需要相应的BTP订阅和技术基础。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 201

Android IntentService详解

转载请注明出处:http://blog.youkuaiyun.com/vnanyesheshou/article/details/75073307 最近加深基础,看到个IntentService类,以前从来没有遇见过,更不知其用来干嘛的,所以就整理了一个demo,看看这个怎么使用。 1 简介 IntentService概括 IntentService is a base class for Se

奋斗的菜鸟ing 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android之Service与IntentService区别

在Android开发中,Service是一个可以在后台执行长时间运行操作的组件。主要有两种类型的Service:普通Service和IntentService。

追梦的鱼儿 1573

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android Service与IntentService区别

相同点: 1、首先Service与IntentService都是Android的基本组件service 2、使用时都是一样需要创建,配置;和调用启动方式都是一样的 不同点: 1、IntentService是继承自Service的service 类,创建了自己的特有方法onHandleIntent——这个方法的主要作用是: 而每一个耗时操作会以工作队列的方式在IntentService的o...

meixi_android的博客 2622

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android Service和IntentService的区别

Service和IntentService的区别 之前介绍过Service的启动方式复习Android之Service的一种情怀 这次将介绍Service和IntentService的区别。Service在Android的学习过程中不可缺少的部分。只有学好它才能更好的学习Android。 IntentService简介 IntentService是继承Service的,所以IntentServic...

jhonjson的博客 2579

android 获取service 实例化,Android IntentService实例化错误

public class DownloadService extends IntentService{super("DownloadService");@Overrideprotected void onHandleIntent(Intent intent) {//download tasks...}}AndroidManifest.xml中:......LauncherActivity.java...

weixin_33419305的博客 316

Android中IntentService与Service的区别

Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。 那么我们当我们编写的耗时逻辑,不得不被service来管理的时候,就需要

Matrixxu博客专栏 5万+

IntentService 与 Service的区别

IntentService 与 Service的区别:(service(不是单独进程和应用程序同进程)intentService(是一个处理异步请求类,专处理耗时任务)) Service 是长期运行在后台的应用程序组件。 Service 不是一个单独的进程,它和应用程序在同一个进程中, Service 也不是一个线程,它和线程没有任何关系,所以它不能直接处理耗时操作。 如果直接把耗时操作放在 Service 的 onStartCommand() 中,很容易引起 ANR .如果有耗时操作就必须开启一.

zjxwon的博客 3273

android service 继承IntentService和Service

在manifest中声明一个service   跟activity以及其它组件一样,你必须在你的应用的manifest文件中声明所有的service们.   要声明你的service,添加一个元素作为元素的儿子.例如: ... ... 就像一个activity,一个service可以定义intent过滤器来使得其它组件使用明

xian00000的专栏 1156

Android IntentService vs Service

Android IntentService vs Service众所周知,Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,为了保证应用中某些功能仍然可以工作而引入了Service,比如播放音乐。针对service,官方文档有2点重要说明: 1. A Service is not a separate process. The Service object itself

zhengdan66的专栏 1273

Android——intentservice介绍

缺点明显: 使用handler进行异步处理时,容易产生内存泄漏问题。固然可以通过将handler设置为静态内部类,解决这个问题,但是将handler设置为静态内部类后就无法引用内部成员变量。 内存泄漏原因: Activity要销毁时,消息队列里消息没处理完,Message Queue默认引用handler,handler默认引用activity。 第二种:使用IntentService(异步任务处理服务) 优点:可以在后台执行,不受Activity生命周期影响。(只能通过startActivi

qq_47112287的博客 4645

Service和IntentService的区别

Service和IntentService的区别 1. 首先IntentService是继承自Service; 2. Service不是一个单独的进程,它和应用程序在同一个进程中; 3. Service也不是一个线程,所以我们要避免在Service中进行耗时的操作; 4. IntentService使用队列的方式将请求的Intent加入队列,然后开启了一个Worker Thre

Android司机 5457
上一篇: android 仿qq 功能,Android 仿QQ界面的实现
下一篇: linux-headers,如何升级linux-headers-generic?
weixin_39708708
博客等级 码龄9年 21粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值