从服务 Android 运行类
Posted
技术标签:
【中文标题】从服务 Android 运行类【英文标题】:Run class from a service Android 【发布时间】:2019-08-19 09:23:11 【问题描述】:WebService_modificar 类实现了与数据库的连接,并通过 .php 文件更新了在我的 EditText 中捕获的日期、坐标等...,并将其保存在我的远程 bbdd 中(我必须指出要执行CLASS WebService_modificar 从 Main 它是完美的)。但现在我希望日期更新,坐标由 CLASS 服务在后台执行。 但是我不能从我的服务中做同样的事情,我不能把 ActivityMain.this 作为上下文。我应该如何从我的 Service 的 onStartCommand 方法运行“classJava”?
private class MyReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
Location location = intent.getParcelableExtra(LocationUpdatesService.EXTRA_LOCATION);
et_fechahora.setText(devuelveFechaHora());
//Aquí hay que meter el webService actualizar
new WebService_modificar(MainActivity.this).execute();
现在我想在 onStartCommand 方法中从我的 Service 运行我的 WebService_Modify 类,以便我在后台获取时间,但我收到了一个错误。
@Override
public int onStartCommand(Intent intent, int flags, int startId)
Log.i(TAG, "Service started");
boolean startedFromNotification = intent.getBooleanExtra(EXTRA_STARTED_FROM_NOTIFICATION,
false);
// We got here because the user decided to remove location updates from the notification.
if (startedFromNotification)
removeLocationUpdates();
stopSelf();
// Le dice al sistema que SI intente volver a crear el servicio después de que se haya eliminado.
return START_STICKY;
这里我把项目的链接留在 GitHub 上看看它更完整的可视化,从而能够解决错误。简而言之,我需要在后台向 bbdd 发送更新。当它运行并处于前台时,它会完美地完成它。让我们看看我们是否能找到解决方案。
https://github.com/Chiscu/kakao
【问题讨论】:
嗨,Chiscu,请阅读how to post a good question 以及如何创建Minimal, Complete, and Verifiable example 【参考方案1】:您可以在服务中使用getApplicationContext()
,而不是MainActivity.this
编辑:
从您的更新中,我看到您的 WebService 需要广播接收器中的上下文。
为什么不使用onReceive
中得到的 Context 作为参数呢?
这个上下文是the Context in which the receiver is running
如果您需要在服务内的onStartCommand
中使用上下文,getApplicationContext()
应该可以工作。
顺便说一句,您的代码链接不起作用。
【讨论】:
您确定您的服务类实际上扩展了Service? 我收到一个错误,因为我正在从服务类调用一个类,而这是从 ActivityMain 调用的 是的,并尝试从 onStartCommand() 方法执行 Java 类 你好,我已经重新发出问题了【参考方案2】:感谢您对错误进行的调试。原因是他用文本版的值修改了base的字段值,当然当从Main(第一平面)执行类Service web_modify时,数据发生了变化,他把它拿来在bbdd中修改它们没有问题。 作为后台的ActivityMain,我不能获取字段的值,也不能获取获取日期和其他数据的方法。
同样感谢大家的 cmets,因为他们让我能够调查并更了解代码。
【讨论】:
以上是关于从服务 Android 运行类的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Android Studio 运行单个 Kotlin 类