Android AsyncTaskLoader,Java
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.loader.content.AsyncTaskLoader;
import android.os.Bundle;
import android.os.Looper;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), System.currentTimeMillis() + "", Toast.LENGTH_SHORT).show();
}
});
print("Main Thread id:" + Looper.getMainLooper().getThread().getId());
print("onCreate");
AsyncTaskLoader asyncTaskLoader = new AsyncTaskLoader<String>(this) {
@Override
protected void onStartLoading() {
super.onStartLoading();
print("onStartLoading");
this.forceLoad();
}
@Override
protected void onForceLoad() {
super.onForceLoad();
print("onForceLoad");
}
@Nullable
@Override
public String loadInBackground() {
print("loadInBackground");
SystemClock.sleep(15_000);
return "后台线程结束";
}
@Override
public void deliverResult(@Nullable String data) {
print("deliverResult");
print(data);
}
@Override
protected boolean onCancelLoad() {
print("onCancelLoad");
return super.onCancelLoad();
}
@Override
protected void onStopLoading() {
print("onStopLoading");
}
};
asyncTaskLoader.startLoading();
SystemClock.sleep(1000);
asyncTaskLoader.cancelLoad();//突然结束
}
private void print(String s) {
Log.d("zhangphil", Thread.currentThread().getId() + " - " + s);
}
}