簡體   English   中英

帶有splashScreen的Asynchtask

[英]Asynchtask with splashScreen

我想在啟動屏幕與首先在我的應用程序中顯示asynchtask的屏幕之間m縮,我從啟動5秒開始,然后啟動asynchtask,我希望當我啟動啟動時也要啟動asynchtask,這是我的啟動代碼:

public class SplashActivity extends Activity {

    private static String Spsc = SplashActivity.class.getName();
    private static long time = 5;   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  // Removes notification bar
        setContentView(R.layout.splash);
        IntentLauncher launcher = new IntentLauncher();
        launcher.start();
    }
    private class IntentLauncher extends Thread {
        @Override
        public void run() {
            try {
                Thread.sleep(time*1000);
            } catch (Exception e) {
                Log.e(Spsc, e.getMessage());
            }
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
            SplashActivity.this.startActivity(intent);
            SplashActivity.this.finish();
        }
    }
}

這是我來自mainActivity的內容:

class FetchPosts extends AsyncTask<Void, Void, Void> {
        private ProgressDialog progressDialog;
        @Override
        protected void onPreExecute() {         
            super.onPreExecute();
            progressDialog = ProgressDialog.show(MainActivity.this, "", getString(R.string.loading_message));
        }

        @Override
        protected Void doInBackground(Void... params) {
            articles = Services.getPosts(MainActivity.this);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            progressDialog.dismiss();

        }
    }

只是

 public class SplashActivity extends Activity {

private static String Spsc = SplashActivity.class.getName();
private static long time = 5;   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  // Removes notification bar
    setContentView(R.layout.splash);
    IntentLauncher launcher = new IntentLauncher();
    launcher.start();
}
private class IntentLauncher extends Thread {
    @Override
    public void run() {
        try {
            Thread.sleep(time*1000);
        } catch (Exception e) {
            Log.e(Spsc, e.getMessage());
        }
        //Intent intent = new Intent(SplashActivity.this, MainActivity.class);
        //SplashActivity.this.startActivity(intent);
        //SplashActivity.this.finish();
          new FetchPosts().execute();
    }
   }
public class FetchPosts extends AsyncTask<Void, Void, Void> {
    private ProgressDialog progressDialog;
    @Override
    protected void onPreExecute() {         
        super.onPreExecute();
        progressDialog = ProgressDialog.show(MainActivity.this, "", getString(R.string.loading_message));
    }

    @Override
    protected Void doInBackground(Void... params) {
        articles = Services.getPosts(MainActivity.this);

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        progressDialog.dismiss();

    }
 }
}

試試下面的代碼,當啟動初始屏幕啟動時,它將啟動asynctask

public class SplashActivity extends Activity {

private static String Spsc = SplashActivity.class.getName();
private static long time = 5;   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  // Removes notification bar
    setContentView(R.layout.splash);
    FetchPosts obj=new FetchPosts();
    obj.execute("dummystring");
 }
}

class FetchPosts extends AsyncTask<String, Void, String> {
    private ProgressDialog progressDialog;
    @Override
    protected void onPreExecute() {         
        super.onPreExecute();
        progressDialog = ProgressDialog.show(MainActivity.this, "", getString(R.string.loading_message));
    }

    @Override
    protected Void doInBackground(String... params) {
        articles = Services.getPosts(MainActivity.this);

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        progressDialog.dismiss();

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM