9.1.5 异步任务AsyncTask的使用
- activity_main.xml
- MainActivity
- AndroidManifest.xml
- network_security_config.xml
一、使用步骤
1.activity_main.xml
代码如下(示例):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/ll_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<EditText
android:id="@+id/tv_url"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="3dp"
android:layout_weight="1"
android:background="#EBEBEB"
android:text="http://172.16.60.128:8080/111.jpg"
android:inputType="textUri"
android:paddingLeft="3dp"
android:textColor="#696969"
android:textSize="20sp"/>
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="4"
android:background="#EBEBEB"
android:onClick="click"
android:text="浏览"
android:textColor="#696969"
android:textSize="20sp"/>
</LinearLayout>
<ImageView
android:id="@+id/iv_pic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/ll_text"
android:scaleType="centerCrop"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:visibility="gone"/>
</RelativeLayout>
1.MainActivity
代码如下(示例):
package com.example.administrator.myapplication;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.UrlQuerySanitizer;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends AppCompatActivity {
protected static final int CHANGE_UI = 1;
protected static final int ERROR = 2;
private EditText et_path;
private ImageView ivPic;
private ProgressBar progressBar;
private String url;
//主线程创建消息处理器
@SuppressLint("HandlerLeak")
private Handler handler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
if (msg.what == CHANGE_UI) {
Bitmap bitmap = (Bitmap) msg.obj;
ivPic.setImageBitmap(bitmap);
} else if (msg.what == ERROR) {
Toast.makeText(MainActivity.this, "图片显示错误!", Toast.LENGTH_SHORT).show();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText) findViewById(R.id.tv_url);
url = et_path.getText().toString().trim();
ivPic = (ImageView) findViewById(R.id.iv_pic);
progressBar = (ProgressBar) findViewById(R.id.progress);
}
//点击事件实现网络请求
public void click(View view) {
new MyAsyncTask().execute(url);
}
class MyAsyncTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... strings) {
String url = strings[0];
Bitmap bitmap = null;
URLConnection conn;
InputStream is;
try {
conn = new URL(url).openConnection();
is = conn.getInputStream();
Thread.sleep(3000);
BufferedInputStream bis = new BufferedInputStream(is);
bitmap = BitmapFactory.decodeStream(bis);
is.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap){
super.onPostExecute(bitmap);
progressBar.setVisibility(View.GONE);
ivPic.setImageBitmap(bitmap);
}
}
}
1.AndroidManifest.xml
代码如下(示例):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.myapplication" >
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config">
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
1.network_security_config.xml
在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件
代码如下(示例):
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。