私は最近、特に Java と Android を使用した並行プログラミングに参加しています。
ハンドラーについていくつか質問があります。1 - Handler をスレッドに関連付ける必要があることがわかっており、それが呼び出されたスレッドで実行されます。ただし、SO のいくつかの例では、ユーザーは次のことを行っています。
public class MainActivity extends Activity
{
private Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState)
{
handler.postDelayed(runnable, 1000);
}
private Runnable runnable = new Runnable()
{
public void run()
{
//Do whatever
handler.postDelayed(this, 30000);
}
};
この例では、UI スレッドで Handler を実行していると仮定していますね。
の代わりにここでネットワーク操作を行うことはできます//DO Whatever
か? 私たちはメインスレッドにいるので、そうは思いません。
これは無意味ですか?AsyncTask を使用してこのタスクを置き換えることができますか?
この同じ例をUIスレッドではなく別のスレッドに適用するにはどうすればよいですか?
スレッドまたは Runnables には、投稿の遅延に似たものがありますか?
postdelayed 機能のためだけにハンドラーを使用し、メインタスクハンドラーが作成されていない、つまり、スレッドと UI/Activity の間の仲介者であることは一般的ですか?