我的应用程序中有一个按钮,点击它应该运行AsyncTask但是没有调用doInBackground方法,我正在尝试使用AsyncTask中的okHTTP连接到我的服务器,这是我的代码,
public class Home extends Fragment implements View.OnClickListener {
Button button;
public static final String TAG = "aj";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.home, container, false);
button = (Button) v.findViewById(R.id.button);
button.setOnClickListener(this);
FirebaseMessaging.getInstance().subscribeToTopic("test");
FirebaseInstanceId.getInstance().getToken();
return v;
}
@Override
public void onClick(View v) {
sendRequest myTask = new sendRequest();
if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB)
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
myTask.execute();
}
private class sendRequest extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
Log.v(TAG, "doInBackground");
String token = FirebaseInstanceId.getInstance().getToken();
OkHttpClient client = new OkHttpClient();
RequestBody body = null;
if (token != null) {
body = new FormBody.Builder()
.add("Token", token)
.build();
}
Request request = new Request.Builder()
.url("https://www.example.com/aj20010319")
.post(body)
.build();
try {
client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}
我不知道为什么没有调用doInBackground方法,记录器不会记录任何与之相关的内容。如果我是正确的,它设置正确。我尝试了其他线程中的解决方案,但没有一个正在运行。
答案 0 :(得分:2)
检查我的机器中的代码,删除其工作正常的复杂性我粘贴下面的代码。 它可能发生两件事
- 构建版本的问题。只需拨打
即可myTask.execute()
;删除所有if else- logcat可能会发生这种情况。如果可能的话,从doInBackground做吐司
醇>
Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_LONG).show();
- 如果您在logcat中搜索,它总是按消息搜索而不是按标签搜索,因此按 doInBackground 搜索而不是按照aj
搜索 醇>
public class MainActivity extends Activity implements View.OnClickListener{
Button button;
@Override
public void onClick(View arg0) {
sendRequest myTask = new sendRequest();
if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.HONEYCOMB)
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
myTask.execute();
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(this);
}
private class sendRequest extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params)
{
int i=0;
while(++i<100)
{
Log.i("www", "www");
}
return null;
}
}
}
答案 1 :(得分:1)
您需要实例化类
new myTask().execute();
onClickListener