我正在阅读AsyncTask
,我尝试了下面的简单程序。但它似乎没有用。我怎样才能使它发挥作用?
public class AsyncTaskActivity extends Activity {
Button btn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener((OnClickListener) this);
}
public void onClick(View view){
new LongOperation().execute("");
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
for(int i=0;i<5;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
return null;
}
@Override
protected void onPostExecute(String result) {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
}
我只是想在后台进程中在5秒后更改标签。
这是我的 main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:max="10"
android:padding="10dip">
</ProgressBar>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Progress" >
</Button>
<TextView android:id="@+id/output"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Replace"/>
</LinearLayout>
答案 0 :(得分:734)
我的完整答案是here,但这是一个解释性图片,以补充此页面上的其他答案。对我来说,了解所有变量的去向是最开始的最令人困惑的部分。
答案 1 :(得分:670)
好的,你正试图通过另一个线程访问GUI。这主要是不好的做法。
AsyncTask执行另一个线程内doInBackground()
内的所有内容,该线程无权访问您的视图所在的GUI。
preExecute()
和postExecute()
允许您在此新线程中发生繁重操作之前和之后访问GUI,您甚至可以将长操作的结果传递给postExecute()
然后显示任何处理结果。
请参阅稍后更新TextView的这些行:
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
将它们放入PostExecute()
然后,在doInBackground
完成后,您将看到TextView文本已更新。
编辑:我注意到你的onClick监听器没有检查是否已经选择了哪个View。我发现最简单的方法是通过switch语句。我在下面编辑了一个完整的课程,提出了所有可以避免混淆的建议。
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings.System;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;
public class AsyncTaskActivity extends Activity implements OnClickListener {
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
// because we implement OnClickListener we only have to pass "this"
// (much easier)
btn.setOnClickListener(this);
}
public void onClick(View view) {
// detect the view that was "clicked"
switch (view.getId()) {
case R.id.button1:
new LongOperation().execute("");
break;
}
}
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.interrupted();
}
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed"); // txt.setText(result);
// might want to change "executed" for the returned string passed
// into onPostExecute() but that is upto you
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
}
答案 2 :(得分:71)
我确定它正在正常执行,但您正在尝试更改后台线程中的UI元素,而这是不可行的。
按如下方式修改你的电话和AsyncTask:
致电课程
注意:我个人建议在执行AsyncTask线程的地方使用onPostExecute()
,而不是在扩展AsyncTask本身的类中。我认为它使代码更容易阅读,特别是如果你需要在多个地方使用AsyncTask处理结果略有不同。
new LongThread()
{
@Override public void onPostExecute(String result)
{
TextView txt = (TextView) findViewById(R.id.output);
txt.setText(result);
}
}.execute("");
LongThread类(扩展AsyncTask):
@Override
protected String doInBackground(String... params) {
for(int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Executed";
}
答案 3 :(得分:54)
我创建了一个使用Android的AsyncTask的简单示例。它以onPreExecute(), doInBackground(), publishProgress()
开头,最后是onProgressUpdate()
。
在这个doInBackground()作为后台线程工作,而其他工作在UI线程中。您无法访问doInBackground()中的UI元素。序列与我提到的相同。
但是,如果您需要更新来自doInBackground
的任何小部件,则publishProgress
可以doInBackground
onProgressUpdate
来调用class TestAsync extends AsyncTask<Void, Integer, String>
{
String TAG = getClass().getSimpleName();
protected void onPreExecute (){
super.onPreExecute();
Log.d(TAG + " PreExceute","On pre Exceute......");
}
protected String doInBackground(Void...arg0) {
Log.d(TAG + " DoINBackGround","On doInBackground...");
for(int i=0; i<10; i++){
Integer in = new Integer(i);
publishProgress(i);
}
return "You are at PostExecute";
}
protected void onProgressUpdate(Integer...a){
super.onProgressUpdate(a);
Log.d(TAG + " onProgressUpdate", "You are in progress update ... " + a[0]);
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.d(TAG + " onPostExecute", "" + result);
}
}
来更新您的UI小部件。
new TestAsync().execute();
在您的活动中将其称为:
{{1}}
答案 4 :(得分:15)
移动这两行:
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
从您的AsyncTask的doInBackground
方法中取出并将它们放入onPostExecute
方法中。您的AsyncTask
应该是这样的:
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
Thread.sleep(5000); // no need for a loop
} catch (InterruptedException e) {
Log.e("LongOperation", "Interrupted", e);
return "Interrupted";
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
TextView txt = (TextView) findViewById(R.id.output);
txt.setText(result);
}
}
答案 5 :(得分:10)
执行异步任务时,任务将经历4个步骤:
以下是演示示例
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
创建后,任务执行非常简单:
new DownloadFilesTask().execute(url1, url2, url3);
我希望这会对你有帮助......
答案 6 :(得分:10)
以异步方式执行某些操作的最短示例:
class MyAsyncTask extends android.os.AsyncTask {
@Override
protected Object doInBackground(Object[] objects) {
//do something asynchronously
return null;
}
}
运行它:
(new MyAsyncTask()).execute();
答案 7 :(得分:10)
AsyncTask 允许您在后台线程上运行任务,同时将结果发布到UI线程。
用户应该始终能够与应用互动,因此重要 以避免使用诸如此类的任务阻止主(UI)线程 从网上下载内容。
这就是我们使用
的原因AsyncTask
。它通过包装UI线程消息队列和处理程序提供了一个简单的接口,允许您发送和处理来自其他线程的可运行对象和消息。
AsyncTask 是一个通用类。 (它的构造函数需要参数化类型。)
它使用这些三种通用类型:
Params
- 执行时发送给任务的参数类型。
Progress
- 后台计算期间发布的进度单元的类型。
Result
- 后台计算结果的类型。
并非所有类型都始终由异步任务使用。要将类型标记为未使用,只需使用类型Void:
private class MyTask extends AsyncTask<Void, Void, Void> { ... }
这三个参数对应于您可以在 AsyncTask
中覆盖的三个主要功能:
doInBackground(Params...)
onProgressUpdate(Progress...)
onPostExecute(Result)
执行AsyncTask
使用要发送到后台任务的参数调用 execute()
。
发生了什么
在主/用户界面上,调用 onPreExecute()
。 (要在此线程中初始化某些内容,例如在用户界面上显示进度条。)
在后台主题中,调用 doInBackground(Params...)
。 (参数是传递给Execute函数的参数。)
长期任务应该发生的地方
必须至少覆盖doInBackground()
才能使用AsyncTask。
在后台计算仍在执行时,调用 publishProgress(Progress...)
更新用户界面中的进度显示。 (例如,为进度条设置动画或在文本字段中显示日志。)
onProgressUpdate()
被调用。在后台线程中,从doInBackground()
返回结果。这将触发下一步。
在主/用户界面上,使用返回的结果调用 onPostExecute()
。
再次使用阻止任务的例子来从网上下载内容,
doInBackground()
方法下载图像并将其存储在BitMap类型的对象中。 onPostExecute()
方法获取位图并将其放在ImageView中。
class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bitImage;
public DownloadImageTask(ImageView bitImage) {
this.bitImage = bitImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mBmp = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mBmp = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mBmp;
}
protected void onPostExecute(Bitmap result) {
bitImage.setImageBitmap(result);
}
}
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
示例B执行
new DownloadFilesTask().execute(url1, url2, url3);
答案 8 :(得分:6)
当您在工作线程中时,您无法直接操作Android上的UI元素。
当您使用AsyncTask时,请了解回调方法。
例如:
public class MyAyncTask extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
// Here you can show progress bar or something on the similar lines.
// Since you are in a UI thread here.
super.onPreExecute();
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// After completing execution of given task, control will return here.
// Hence if you want to populate UI elements with fetched data, do it here.
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
// You can track you progress update here
}
@Override
protected Void doInBackground(Void... params) {
// Here you are in the worker thread and you are not allowed to access UI thread from here.
// Here you can perform network operations or any heavy operations you want.
return null;
}
}
供参考: 要从工作线程访问UI线程,可以在视图上使用runOnUiThread()方法或post方法。
例如:
runOnUiThread(new Runnable() {
textView.setText("something.");
});
or
yourview.post(new Runnable() {
yourview.setText("something");
});
这将帮助您更好地了解事情。因此,在您的情况下,您需要在onPostExecute()方法中设置textview。
答案 9 :(得分:6)
不要
如果您不熟悉AsyncTask,那么在编写AsyncTask时会感到很困惑。罪魁祸首是AsyncTask中使用的参数,即AsyncTask<A,B,C>
。根据方法的 A,B,C(参数)签名而有所不同,这会使事情更加混乱。
关键是不要记住。如果您可以看到任务真正需要执行的操作,那么在第一次尝试时使用正确的签名编写AsyncTask就是小菜一碟。只需弄清楚您的输入,进度和输出是什么,您就可以开始工作了。
AsyncTask是在后台线程中运行的后台任务。它需要输入,执行进度,并提供输出。
即
AsyncTask<Input,Progress,Output>
。
AsyncTask
和doInBackground()
之间
doInBackground()
和onPostExecute(),
onProgressUpdate()也是 相关
如何在代码中编写代码?
DownloadTask extends AsyncTask<String,Integer,String>{
// Always same signature
@Override
public void onPreExecute()
{}
@Override
public String doInbackGround(String... params)
{
// Download code
int downloadPerc = // calculate that
publish(downloadPerc);
return "Download Success";
}
@Override
public void onPostExecute(String result)
{
super.onPostExecute(result);
}
@Override
public void onProgressUpdate(Integer... params)
{
// show in spinner, access UI elements
}
}
您将如何运行此任务?
new DownLoadTask().execute("Paradise.mp3");
答案 10 :(得分:5)
我建议您使用此库进行背景工作,让您的生活更轻松 https://github.com/Arasthel/AsyncJobLibrary
这很简单..
AsyncJob.doInBackground(new AsyncJob.OnBackgroundJob() {
@Override
public void doOnBackground() {
startRecording();
}
});
答案 11 :(得分:5)
Detailed AsyncTask Explanation tutorial
什么是AsyncTask?
AsyncTask是一个Android类,可帮助我们执行
之类的复杂操作它减轻了开发人员的紧张情绪
如果您
AsyncTask对您而言不是更好的选择。 AsyncTask主要用于短时间操作(最多几秒钟)
如何在您的应用程序中使用AsyncTask?
AsyncTask使用泛型数据类型
AsyncTask帮助我们在其方法内更新UI。
这些方法在主线程上运行。这就是为什么您可以更新UI元素的原因。
在 doInBackgrund()
中添加困难的任务并使用 execute()方法调用AsyncTask。
下面的完整详细教程链接
答案 12 :(得分:3)
带有POST请求的示例异步任务:
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("key1", "value1"));
params.add(new BasicNameValuePair("key1", "value2"));
new WEBSERVICEREQUESTOR(URL, params).execute();
class WEBSERVICEREQUESTOR extends AsyncTask<String, Integer, String>
{
String URL;
List<NameValuePair> parameters;
private ProgressDialog pDialog;
public WEBSERVICEREQUESTOR(String url, List<NameValuePair> params)
{
this.URL = url;
this.parameters = params;
}
@Override
protected void onPreExecute()
{
pDialog = new ProgressDialog(LoginActivity.this);
pDialog.setMessage("Processing Request...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
super.onPreExecute();
}
@Override
protected String doInBackground(String... params)
{
try
{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpEntity httpEntity = null;
HttpResponse httpResponse = null;
HttpPost httpPost = new HttpPost(URL);
if (parameters != null)
{
httpPost.setEntity(new UrlEncodedFormEntity(parameters));
}
httpResponse = httpClient.execute(httpPost);
httpEntity = httpResponse.getEntity();
return EntityUtils.toString(httpEntity);
} catch (Exception e)
{
}
return "";
}
@Override
protected void onPostExecute(String result)
{
pDialog.dismiss();
try
{
}
catch (Exception e)
{
}
super.onPostExecute(result);
}
}
答案 13 :(得分:2)
更新:2020年3月
根据Android开发者official documentation,AsyncTask现在已弃用。
建议改用kotlin corourines。简而言之,它允许您以顺序样式编写异步任务。
答案 14 :(得分:1)
简单地:
LongOperation MyTask = new LongOperation();
MyTask.execute();
答案 15 :(得分:1)
private class AsyncTaskDemo extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
//do code here
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
@Override
protected void onCancelled() {
super.onCancelled();
progressDialog.dismiss();
Toast toast = Toast.makeText(getActivity(),
"Error is occured due to some probelm", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 25, 400);
toast.show();
}
}
答案 16 :(得分:1)
你需要声明按钮onclicklistener,一旦点击它调用AsyncTask类的DownloadJson,过程将如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DownloadJson().execute();
}
});
}
// DownloadJSON AsyncTask
private class DownloadJson extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
newlist = new ArrayList<HashMap<String, String>>();
json = jsonParser.makeHttpRequest(json, "POST");
try {
newarray = new JSONArray(json);
for (int i = 0; i < countdisplay; i++) {
HashMap<String, String> eachnew = new HashMap<String, String>();
newobject = newarray.getJSONObject(i);
eachnew.put("id", newobject.getString("ID"));
eachnew.put("name", newobject.getString("Name"));
newlist.add(eachnew);
}
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void args) {
newlisttemp.addAll(newlist);
NewAdapterpager newadapterpager = new NewAdapterpager(ProcesssActivitypager.this,newlisttemp);
newpager.setAdapter(newadapterpager);
}
}
答案 17 :(得分:0)
更改您的代码,如下所示:
@Override
protected void onPostExecute(String result) {
runOnUiThread(new Runnable() {
public void run() {
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
}
});
}
答案 18 :(得分:0)
使用进度示例AsyncTask示例
import android.animation.ObjectAnimator;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class AsyncTaskActivity extends AppCompatActivity implements View.OnClickListener {
Button btn;
ProgressBar progressBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
progressBar = (ProgressBar)findViewById(R.id.pbar);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
new LongOperation().execute("");
break;
}
}
private class LongOperation extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
Log.d("AsyncTask", "doInBackground");
for (int i = 0; i < 5; i++) {
try {
Log.d("AsyncTask", "task "+(i + 1));
publishProgress(i + 1);
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.interrupted();
}
}
return "Completed";
}
@Override
protected void onPostExecute(String result) {
Log.d("AsyncTask", "onPostExecute");
TextView txt = (TextView) findViewById(R.id.output);
txt.setText(result);
progressBar.setProgress(0);
}
@Override
protected void onPreExecute() {
Log.d("AsyncTask", "onPreExecute");
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("onPreExecute");
progressBar.setMax(500);
progressBar.setProgress(0);
}
@Override
protected void onProgressUpdate(Integer... values) {
Log.d("AsyncTask", "onProgressUpdate "+values[0]);
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("onProgressUpdate "+values[0]);
ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 100 * values[0]);
animation.setDuration(1000);
animation.setInterpolator(new LinearInterpolator());
animation.start();
}
}
}
答案 19 :(得分:0)
ASync任务;
public class MainActivity extends AppCompatActivity {
private String ApiUrl="your_api";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyTask myTask=new MyTask();
try {
String result=myTask.execute(ApiUrl).get();
Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public class MyTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String result="";
HttpURLConnection httpURLConnection=null;
URL url;
try {
url=new URL(strings[0]);
httpURLConnection=(HttpURLConnection) url.openConnection();
InputStream inputStream=httpURLConnection.getInputStream();
InputStreamReader reader=new InputStreamReader(inputStream);
result=getData(reader);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public String getData(InputStreamReader reader) throws IOException{
String result="";
int data=reader.read();
while (data!=-1){
char now=(char) data;
result+=data;
data=reader.read();
}
return result;
}
}
}
答案 20 :(得分:0)
在使用AsyncTask时,有必要创建一个类的后继者,并在其中注册我们所需的方法的实现。在本课程中,我们将研究三种方法:
doInBackground -将在新线程中执行,这里我们解决了所有困难的任务。因为非主线程-无法访问UI。
onPreExecute -在doInBackground之前执行,可以访问UI
onPostExecute -在doInBackground之后执行(如果取消了AsyncTask,则不起作用-在下一课中对此进行访问),可以访问UI
此MyAsyncTask类
class MyAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
tvInfo.setText("Start");
}
@Override
protected Void doInBackground(Void... params) {
//your background method
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
tvInfo.setText("Finish");
}
}
这是调用活动或片段的方法
MyAsyncTask myAsyncTask = new MyAsyncTask ();
myAsyncTask.execute();
答案 21 :(得分:0)
如果打开AsyncTask类,则可以看到以下代码。
public abstract class AsyncTask<Params, Progress, Result> {
@WorkerThread
protected abstract Result doInBackground(Params... params);
@MainThread
protected void onPreExecute() {
}
@SuppressWarnings({"UnusedDeclaration"})
@MainThread
protected void onPostExecute(Result result) {
}
}
AsyncTask功能
示例
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mEmailView = (AutoCompleteTextView) findViewById(R.id.email);
AsyncTask<Void, Void, Post> asyncTask = new AsyncTask<Void, Void, Post>() {
@Override
protected Post doInBackground(Void... params) {
try {
ApiClient defaultClient = Configuration.getDefaultApiClient();
String authorization = "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE1ODIxMzM4MTB9.bA3Byc_SuB6jzqUGAY4Pyt4oBNg0VfDRctZ8-PcPlYg"; // String | JWT token for Authorization
ApiKeyAuth Bearer = (ApiKeyAuth) defaultClient.getAuthentication("Bearer");
Bearer.setApiKey(authorization);
PostApi apiInstance = new PostApi();
String id = "1"; // String | id
Integer commentPage = 1; // Integer | Page number for Comment
Integer commentPer = 10; // Integer | Per page number For Comment
Post result;
try {
result = apiInstance.apiV1PostsIdGet(id, authorization, commentPage, commentPer);
} catch (ApiException e) {
e.printStackTrace();
result = new Post();
}
return result;
} catch (Exception e) {
e.printStackTrace();
return new Post();
}
}
@Override
protected void onPostExecute(Post post) {
super.onPostExecute(post);
if (post != null) {
mEmailView.setText(post.getBody());
System.out.print(post);
}
}
};
asyncTask.execute();
}