Я использую эту процедуру для запуска вечной функции в другом потоке, но останавливаю ее в любое время или перезапускаю. Тем не менее, я получаю две ошибки на компиляции (с комментариями):Почему эта реализация AsyncTask не компилируется?
public class MainActivity extends AppCompatActivity
{
protected void onCreate(Bundle savedInstanceState) {
StrtBtn.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
// I want to start the function on another thread here
myTask = new MyTask();
myTask.execute();
}});
StpBtn.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
// I want to stop the function
message = "StopVideo";
myTask.cancel(true);
}});
public void MyFunction()
{
// whatever
}
}
public class MyTask extends AsyncTask<Void, Void, Void> // Error: class 'MyTask' is public, should be declared in a file named 'MyTask.Java'
{
protected Void doInBackground(Void... params)
{
while(!isCancelled())
{
// my code here to call the function here
}
}
}
Ваш doInBackground(); должен возвращать целочисленное значение типа. а также реализовать onPost (целочисленный результат) {}; где result - значение, возвращаемое методом doInbacground() – HAXM
@HAXM Нет, значение Integer - это прогресс, а не результат –
. Это неправильное использование для AsyncTask. Вам понадобится Тема. – 323go