我正在使用AsyncTask
将图片转换为base64
值。任务在后台运行,应用程序将移至下一个活动。如何检查AsyncTask的状态以检查它是否完成......
我的asynctask代码......
public class Asyncimg extends AsyncTask<Void, Integer, String>
{
//for converting images to base64
protected void onPreExecute (){
//disbaling sync button on converting pic to base64
}
protected String doInBackground(Void...arg0) {
Cursor cursor = mydb.getDat1();
//fetching the image location
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
for( int i=0 ; i< 1 ; i++ )
{
if( cursor.getColumnName(i) != null )
{
try
{
if( cursor.getString(i) != null )
{
//saving image to bitmap
Bitmap bitmap = BitmapFactory.decodeFile(cursor.getString(cursor.getColumnIndex(DBHelper.PHOTO)));
//converting it to base64
String en= encodeToBase64( resize(bitmap,1080,1920), Bitmap.CompressFormat.JPEG,50);
Log.d("base",en);
//inserting it to table pic
mydb.insertpic(cursor.getInt(1),en);
}
}
catch( Exception ignored)
{
}
}
}
cursor.moveToNext();
}
cursor.close();
mydb.updatebin();
return null;
}
protected void onPostExecute(String result) {
}
}
如何从其他活动中查看其状态?
答案 0 :(得分:1)
方式1:
制作Constance class
并更改该类的值,并在另一项活动中检查该值是否为新值
方式2:
使用Intent
并将数据和值放入extras
,然后调用activity
方式3:
创建并使用interface
个侦听器
方式4 :(似乎很好的方式)
使用EventBus
库:https://github.com/greenrobot/EventBus
任何时候您需要通过以下方式通知其他活动:
EventBus.getDefault().post("notify param");
然后在另一个活动中处理通知:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent("notify param") {/* Do something */};
(有关使用EventBus
外观library documents on github)
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以将返回变量设置为&#34;公共静态&#34; ,从当前活动类中调用公共静态变量并显示其上一个类的值。
注意:如果先前的活动类被刷新或销毁,使其值为null,则该值将减少,从中您可能会获得NullPointerException