如何从扩展 JobService 的类中调用将视图作为参数的 MainActivity 方法?
Posted
技术标签:
【中文标题】如何从扩展 JobService 的类中调用将视图作为参数的 MainActivity 方法?【英文标题】:How to call a method from MainActivity which takes views as parameters, from a class which extends JobService? 【发布时间】:2020-03-22 21:40:43 【问题描述】:我想执行 MainActivity 中的这个方法...
public void checkNow(View view)
new Thread(() ->
//codes...
EditText getSite = findViewById(R.id.site);
site = getSite.getText().toString();
//codes...
Toast.makeText(this, "Connecting...", Toast.LENGTH_SHORT).show();
new MovieAsyncTask().execute(movie, url, site);
).run();
...来自以下课程
public class MovieUpdatesService extends JobService
private static final String TAG = "MovieUpdatesService";
private boolean jobCancelled = false;
@Override
public boolean onStartJob(JobParameters params)
Log.d(TAG, "Job started");
doBackgroundWork(params);
return true;
public void doBackgroundWork(final JobParameters params)
if (jobCancelled)
return;
//call checkNow() method here
Log.d(TAG, "Job finished");
jobFinished(params, false);
@Override
public boolean onStopJob(JobParameters params)
Log.d(TAG, "Job cancelled before completion");
jobCancelled = true;
return true;
我想致电checkNow(View view)
,但我不知道如何从此类访问这些视图。
我尝试使用interface
,但我不明白如何使它适用于我的情况。
我是 android 新手,所以如果可能的话,我正在寻找一个简单的解决方案
【问题讨论】:
为了更好地理解您的问题,您想从服务本身获取视图 (textview) 及其内容吗? @tomerpacific 我想从服务类调用checkNow(View view)
,但我不知道如何访问这些视图
我不会从服务访问视图。由于视图与活动有关,我会将它们留在那里。从服务中调用它们的触发器是什么?您是否考虑过只更新服务的成员变量?
@tomerpacific 我该怎么做?
我的回答对你有帮助吗?
【参考方案1】:
要让您的服务保存文本视图的值,您可以添加一个成员变量。然后你可以为这个字符串公开一个 setter 方法。
public class MovieUpdatesService extends JobService
private static final String TAG = "MovieUpdatesService";
private boolean jobCancelled = false;
private String siteDetails = ""; <----
//Use this method from the Activity
public void setSiteDetails(String _siteDetails)
siteDetails = _siteDetails
@Override
public boolean onStartJob(JobParameters params)
Log.d(TAG, "Job started");
doBackgroundWork(params);
return true;
public void doBackgroundWork(final JobParameters params)
if (jobCancelled)
return;
//use siteDetails here
Log.d(TAG, "Job finished");
jobFinished(params, false);
@Override
public boolean onStopJob(JobParameters params)
Log.d(TAG, "Job cancelled before completion");
jobCancelled = true;
return true;
【讨论】:
抱歉回复晚了。我在这个网站上不活跃。我没有完全使用您的答案,但它让我想到了将方法分成几部分并解决问题。那谢谢啦! :)以上是关于如何从扩展 JobService 的类中调用将视图作为参数的 MainActivity 方法?的主要内容,如果未能解决你的问题,请参考以下文章