今天算是有点小激动呢!拿到Android与PHP这个课题已经两个星期了,直到今天才算是有了一点点小收获。
虽然还是没能成功上传到服务器,不过已经看到了曙光,已经实现了一半了,那就是已经连接到了服务器。不
说废话了,还是写点自己的记录吧!
如果想要实现Android与PHP的交互我们首先应该知道一个叫AsynTask的抽象类。
下面是我的笔记:
为了方便在子线程中对UI进行操作,Android提供了一些好用烦人工具类,AsynTask就是其中之一。借助AsynTask
,可以十分简单地从子线程切换到主线程,它的原理也是基于异步消息处理机制的。
AsynTask的基本用法:
1.AsynTask是一个抽象类,因此使用它必须要创建一个类去继承它。在继承AsynTask时,可以为其指定三个泛型
参数,这三个参数的用途如下所示:
Params:在执行AsynTask时需要传入的参数,用于后台的任务中使用。
Progress:后台任务执行时,如果需要在界面上显示当前的进度,则使用该参数作为进度单位。
Result:当任务执行完毕后,如果需要对结果进行返回,则使用该参数作为返回值类型。
例如:class DownLoadTask extends AsynTask{
...
}
通常使用AsynTask时,需要重写它的4个方法。
1.onPreExcute():这个方法在后台任务执行之前调用,一般用于界面上初始化操作,例如,显示一个
进度条对话框等。
2.doInBackground(Params...):这个方法在子线程中运行,用于处理耗时操作,操作一旦完既可以
通过return语句将任务的执行结果返回。如果AsynTask的第三个泛型参数指定的是void则可以不用返回
结果。需要注意的是,这个方法不能进行更新UI操作,如果要在该方法中更新UI可以手动调动
publishProgress(Progress...)方法来完成。
3.onProgressUpdate(Progress...):如果在doInBackground(Params...)方法中调用了publishProgress
(Progress...)方法,这个方法就会很快被调用,方法中携带的参数就是后台任务中传递过来的
在这个方法可以对UI进行操作,利用参数Progress就可以对UI进行相应的更新。
4.onPostExcute(Result):当doInBackground(Params...)执行完毕通过return语句进行返回时,这个
方法会很快被调用。在doInBackground(Params...)中返回的数据会作为参数传递到该方法中。此时
可以利用返回的参数来进行UI操作,例如,提醒某个任务完成了。
package com.itcast.asyntask;
import android.os.AsyncTask;
import and