Ich verwende diese Routine, um eine Funktion für immer für einen anderen Thread zu starten, aber jederzeit zu stoppen oder neu zu starten. Ich zwei Fehler jedoch erhalten zum Kompilieren (kommentiert):Warum wird diese AsyncTask-Implementierung nicht kompiliert?
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
}
}
}
Ihre doInBackground() aufgerufen wird etwas zu tun; muss einen Integer-Wert zurückgeben. und auch onPost implementieren (Integer-Ergebnis) {}; wo result ist der von der doInbacground() -Methode zurückgegebene Wert – HAXM
@HAXM Nein, der Integer-Wert ist der Fortschritt, nicht das Ergebnis –
Das ist die falsche Verwendung für eine AsyncTask. Du wirst einen Thread wollen. – 323go