java - 如何从扩展 JobService 的类中调用以 View 作为参数的 MainActivity 方法?

标签 java android android-activity view 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) 但我不知道如何从此类访问这些 View 。 我尝试使用 interface 但我不明白如何让它在我的情况下工作。 我是 android 新手,所以我正在寻找一个简单的解决方案(如果可能的话)

最佳答案

要允许您的服务保存 TextView 的值,您可以添加一个成员变量。然后您可以公开该字符串的 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;
  }
}

关于java - 如何从扩展 JobService 的类中调用以 View 作为参数的 MainActivity 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59068399/

相关文章:

java - 通过浏览器传送 csv 文件时出错

java - 如何径向移动图片?

java - 从asynctask调用activity的方法

java - 替代控制结构

android - 缩放相对布局中的内容

android - 为现有应用程序创建即时应用程序

android - 从通知启动 Activity 会破坏父 Activity

java.lang.IllegalStateException : Fragment has not been attached yet Android Studio

java - DialogFragment 上的 Android setLayoutDirection

android - 如何在不同的 Activity 之间共享一个套接字对象?