Я не могу назвать AsyncTask статическим методом. В нем говорится, что «нельзя ссылаться из статического контекста». Важно, чтобы этот метод был статичным, и мне нужно, чтобы он был таким же для нескольких других моих процессов.Не удается вызвать AsyncTask из статического метода?
Есть ли способ вызвать AsyncTask из метода?
public static void UpdateResults(String requestSearch){
new GetSearchResults(requestSearch).execute(); //shows an error
}
class GetSearchResults extends AsyncTask<Void, Void, Void> {
String requestSearch;
GetSearchResults(String searchtext){
this.requestSearch = searchtext;
}
@Override
protected Void doInBackground(Void... params) {
//functions continuing
}
}
EDIT: Anands решение работало, однако он бросил это исключение, как только он попал к методу:
FATAL EXCEPTION: AsyncTask #1
Process: com.eproject.eproject.emobile, PID: 26831
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at com.eproject.eproject.emobile.SearchTabs.SearchPeopleTab$GetSearchResults.doInBackground(SearchPeopleTab.java:78)
at com.eproject.eproject.emobile.SearchTabs.SearchPeopleTab$GetSearchResults.doInBackground(SearchPeopleTab.java:63)
линия 78, которая показывает нулевой указатель, указывает на эту строку кода:
SharedPreferences accPref = getActivity().getSharedPreferences(
"accPref", Context.MODE_PRIVATE);
Похоже, он не может получить доступ к SharedPreferences от метода AsyncTask. Он работал задолго до этого. Что с этим не так?
затем попробуйте позвонить напрямую asynch – Pavya
@ user3676184 Что вы подразумеваете под именем? – Dinuka
вызовите новые GetSearchResults (requestSearch) .execute(); это когда вам нужно вызвать асинхронный. почему вы создаете для него отдельный метод. – Pavya