关于android中AsyncTask和jni技术简单应用--附源码

在飞 2013-06-26 10:02:14

/**
* 使用AsyncTask做的锅炉压力值变化,动态显示的demo
* @author pang
* !!!这是自己学jni时写的小demo,c的代码是产生一个0-300的随机数。在jni文件夹下的com_pang_monitor_MainActivity.c文件中
*
* 有什么不足,请指出。谢谢。共同进步!
* 求教大神,AsyncTask<Void, Void, Void>,第二个参数和第三个参数的使用技巧。谢谢
*/
public class MainActivity extends Activity {

protected static final String TAG = "MainActivity";
private int progress;//锅炉不断变化的值
private MediaPlayer mp;//锅炉值大于280报警用的音乐

//c加载动态链接库所用到的
static {
System.loadLibrary("Monitor");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fillData();
}

public void fillData() {

AsyncTask<Void, Void, Void> astntask=new AsyncTask<Void, Void, Void>(){
//取代handler中执行的代码,在子线程中运行
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
boolean flag=true;
while(flag){
progress = processNative();
Log.i(TAG, "process:"+progress);
//锅炉的值大于280报警音乐
if (progress > 270) {
mp = MediaPlayer.create(MainActivity.this, R.raw.ylzs);
mp.start();
return null ;
}
//只有publishProgress()了才能调用onProgressUpdate()
publishProgress();

SystemClock.sleep(1000);
}
return null;
}
//更新的时候调用,记得在dpInBackground中调用publishProgress(); 例:进度条显示数据,走格时,调用次方法。
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
MyView mv = new MyView(MainActivity.this, progress);
setContentView(mv);
super.onProgressUpdate(values);
}
//主线程更新Ui,界面更新前调用的方法,例:当读取数据需要进度条先显示的时候可以,放在此方法中。
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub

super.onPreExecute();
}
//主线程更新ui,界面更新后的方法,例:当进度条读完之后,隐藏进度条,放在此方法中。
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
MyView mv = new MyView(MainActivity.this, progress);
setContentView(mv);
super.onPostExecute(result);
}
};
astntask.execute();
}



@Override
protected void onStop() {
// TODO Auto-generated method stub
if(mp!=null){
mp.stop();
mp.release();
mp = null;
}
super.onStop();
}
//c用到的方法
public native int processNative();
}


源码地址:
另外求教AsyncTask的第二个参数和第三个参数的应用案例。
...全文
160 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
凉凉二点凉 2013-06-26
  • 打赏
  • 举报
回复
第二个参数是给onProgressUpdate用的。亲 publishProgress(参数) onProgressUpdate中用values[]来得 第三个参数是给onPostExecute用的。 亲 doInBackground中返回的值在onPostExecute得到

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧