如何从扩展 JobService 的 class 调用将视图作为参数的 MainActivity 方法?
How to call a method from MainActivity which takes views as parameters, from a class which extends JobService?
我想执行 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();
}
...来自以下class
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)
,但我不知道如何从这个 class 访问这些视图。
我尝试使用 interface
但我不明白如何让它在我的情况下工作。
我是 android 的新手,所以我正在寻找可能的简单解决方案
要允许您的服务保存文本视图的值,您可以添加一个成员变量。然后你可以为这个字符串公开一个 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;
}
}
我想执行 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();
}
...来自以下class
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)
,但我不知道如何从这个 class 访问这些视图。
我尝试使用 interface
但我不明白如何让它在我的情况下工作。
我是 android 的新手,所以我正在寻找可能的简单解决方案
要允许您的服务保存文本视图的值,您可以添加一个成员变量。然后你可以为这个字符串公开一个 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;
}
}