以下のように、サービスクラスの1つを介してコンストラクターを介して、スレッドの1つのクラス変数を初期化しています。
ProcessMediaThread pThread = new ProcessMediaThread(listMediaPath, mediaType);
pThread.start();
listMediaPathはオブジェクトです。
ProcessMediaThread クラス内: ArrayList<String>();
public class ProcessMediaThread extends Thread
{
private List<String> absoluteMediaPath= new ArrayList<String>();
private String mediaType;
public ProcessMediaThread(List<String> absoluteMediaPathList, String mediaType)
{
this.absoluteMediaPath = absoluteMediaPathList;
this.mediaType= mediaType;
}
私のオーバーライドされたrun()
方法:
@Override
public void run()
{
if(mediaType.equals(MediaType.PHOTO)) //<- mediaType value is retained..
{
for(int i=0;i<absoluteMediaPath.size();i++) // <- here absoluteMediaPath is empty..!!
{
//...
}
私の友人の1人は、コンストラクターレベルで別のアプローチに従うことを提案しています:
this.absoluteMediaPath.addAll(absoluteMediaPathList);
働いた.. !!
問題が発生している正確な場所と何をしているのかを誰かが提案できますaddAll(Collection<? extends E> c);
か?