0

アクティビティを開始すると、このアクションを実行します

webservice.updateallCatNews();

この機能は、オンライン データベースからローカル データベースにデータを取得します。終了時間は一定ではなく、インターネットの速度によって異なります。

アクションの実行がいつ終了するか知りたいです。15 の場合もあれば、10 か 20 の場合もあります。終了後に活動を開始する必要があります。

asynctask を除いて、アクションが終了したことを検出できる関数はありますか?

private class UpdatingNews extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        webservice.updateallCatNews();
        return null;
    }

    @Override
    protected void onPostExecute(String result) {

    }
}

活動クラス

private UpdatingNews update;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_formnewuser);
    webservice = new Database_WebService(this);

    update = new UpdatingNews();
    if (isOnline() == true) {
        update.execute("...");

    }
}

UpdateallCatNews クラス

public void updateallCatNews() {
    try {
        List<List_CategoryNews> newsCat = dbhelper.getAllNewsCategories();
        for (List_CategoryNews nwCat : newsCat) {

            int CatNewsID = nwCat.getCatID();

            if (CatNewsID != 0) {
                List_CategoryNews deleteNewsCat = new List_CategoryNews(
                        CatNewsID);
                dbhelper.DeleteNewsCat(deleteNewsCat);
            }
        }
        GetNewsCategory();
    } catch (Exception ex) {
        AlertDialog.Builder b = new AlertDialog.Builder(mContext);
        b.setMessage(ex.toString());
        b.show();
    }
}

このクラス内では、他のアクティビティを実行できるため、others エラーはありません。

この if() は実行されていないようです

if(update.getStatus().equals(AsyncTask.Status.RUNNING));

なぜ機能

webservice.updateallCatNews();

実行しませんか?

4

1 に答える 1

0

これを確認するためにスレッドを使用できます。ここでハンドラーを使用してメッセージを送信できます。メッセージを確認することで、さらに処理を行うことができます。スレッドを UI に接続する唯一の方法は、ハンドラーを使用することです。助けます。

Thread animator = new Thread() {
        public void run() {
            int i = 0;
            try {
                sleep(2000);
                while (i < 4) {
                    sleep(50);
                    handler.sendMessage(handler.obtainMessage(i));
                    i++;
                }
            } catch (Exception e) {

            }
        }
    };
    animator.start();
    handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0) {
                animatedimage.setImageResource(R.drawable.sub1);
            } else if (msg.what == 1) {
                animatedimage.setImageResource(R.drawable.sub2);
            } else if (msg.what == 2) {
                animatedimage.setImageResource(R.drawable.sub3);
            } else if (msg.what == 3) {
                animatedimage.setImageResource(R.drawable.sub4);
            }
        }

    };
于 2012-05-02T11:10:08.797 に答える