Activity UI Handler ProgressBar AsyncTask

package io.vov.vitamio.activity;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import io.vov.vitamio.Vitamio;
import java.lang.ref.WeakReference;

public class InitActivity extends Activity
{
  public static final String FROM_ME = "fromVitamioInitActivity";
  private ProgressDialog mPD;
  private UIHandler uiHandler;

  protected void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    getWindow().addFlags(128);
    this.uiHandler = new UIHandler(this);
    new AsyncTask()
    {
      protected Boolean doInBackground(Object[] paramArrayOfObject)
      {
        return Boolean.valueOf(Vitamio.initialize(InitActivity.this, InitActivity.this.getResources().getIdentifier("libarm", "raw", InitActivity.this.getPackageName())));
      }

      protected void onPostExecute(Boolean paramBoolean)
      {
        if (paramBoolean.booleanValue())
          InitActivity.this.uiHandler.sendEmptyMessage(0);
      }

      protected void onPreExecute()
      {
        InitActivity.this.mPD = new ProgressDialog(InitActivity.this);
        InitActivity.this.mPD.setCancelable(false);
        InitActivity.this.mPD.setMessage(InitActivity.this.getString(InitActivity.this.getResources().getIdentifier("vitamio_init_decoders", "string", InitActivity.this.getPackageName())));
        InitActivity.this.mPD.show();
      }
    }
    .execute(new Object[0]);
  }

  private static class UIHandler extends Handler
  {
    private WeakReference<Context> mContext;

    public UIHandler(Context paramContext)
    {
      this.mContext = new WeakReference(paramContext);
    }

    public void handleMessage(Message paramMessage)
    {
      InitActivity localInitActivity = (InitActivity)this.mContext.get();
      switch (paramMessage.what)
      {
      default:
        return;
      case 0:
      }
      localInitActivity.mPD.dismiss();
      Intent localIntent1 = localInitActivity.getIntent();
      Intent localIntent2 = new Intent();
      localIntent2.setClassName(localIntent1.getStringExtra("package"), localIntent1.getStringExtra("className"));
      localIntent2.setData(localIntent1.getData());
      localIntent2.putExtras(localIntent1);
      localIntent2.putExtra("fromVitamioInitActivity", true);
      localInitActivity.startActivity(localIntent2);
      localInitActivity.finish();
    }
  }
}
时间: 2024-08-02 06:58:53

Activity UI Handler ProgressBar AsyncTask的相关文章

Handler和AsyncTask

Android消息机制: Message,handler,looper类的使用及消息的传递 主线程和子线程之间的消息传递 ————————————————— ——>     Message  message  message——>  looper —↑—————————————— ↓—— <————Handler<-————    ↓ Looper提供消息队列的集合,消息通过handler增加和取出,handler的操作对象就是主(UI Thread),子线程 Android.os

Handler与AsyncTask比较

AsyncTask实现的原理和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程. 使用的优点: 简单,快捷 过程可控 使用的缺点: 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来. Handler异步实现的原理和适用的优缺点 在Handler 异步实现时,涉及到 Handler, Looper, Message,Th

Handler和AsyncTask的区别

Handler和AsyncTask的区别 1.Handler 实现原理:Handler实现时,包含Handler.Thread.Message.Looper对象, 主线程启动子线程(Thread).子线程运行生成Message-Looper获取Message并传给 Handler依次获取Looper的Message,并进行UI更新. 2)特点:Handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建他的线程中,安排消息或Runnable 在

MVC实现有关时间的进度条,使用jQuery ui的progressbar

在电商网站中,有时候通过进度条来直观地显示用户是否到期以及用户当前的状态. 设计这样的一个Model. public class User { public int Id { get; set; } public string Name { get; set; } public int CoopTime { get; set; } public DateTime JoinTime { get; set; } } 以上,合作时长属性CoopTime,和加入时间属性JoinTime是和进度密切相关的

多线程异步机制Handler以及AsyncTask

Android当中多线程的写法跟JAVA当中相差不了太多,只需要新建一个类继承自Thread类即可.然后重写父类的run方法.并在里面写耗时逻辑即可 class MyThread extends Thread { @Override public void run() { // 处理具体的逻辑 } } 启动线程 new MyThread().start(); 当然也可以像下面这样写,这样的写法更加适合,因为使用继承的方式耦合性有点高 class MyThread implements Runna

Android中的Handler和AsyncTask

1.Handler简介 Handler在android里负责发送和处理消息.它的主要用途: 1)按计划发送消息或执行某个Runnanble(使用POST方法),类似定时器: 2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程): 默认情况下,Handler接受的是当前线程下的消息循环实例(使用Handler(Looper looper).Handler(Looper looper, Handler.Callback callback)可以指定线程),同时一个消息队列(M

android线程之 Handler与AsyncTask的应用

做应用程序的开发的时候,我们程序员更多的关心的是线程. 一个android应用程序开启后,默认开启一个主线程(大部分都和UI相关,所以又叫UI 线程).在UI线程上面运行的Avtivity组件,Service组件,BroadcastReceiver组件. 用户操作主线程时,需要注意不允许在UI线程中做耗时的操作.比如:复杂的逻辑计算,休眠,联网,下载数据等都是耗时的操作.如果在UI主线程中做耗时的操作,一旦超过5秒,应用程序抛出异常,会报一个ANR(Application not respond

更新UI——Handler&runOnUiThread

有时会碰到在非主UI线程更新视图的需要.这个时候我们有两种处理的方式.一种是Handler一种是Activity中的 runOnUiThread(Runnable )方法.对于第一中方法,是采用传递消息的方式,调用Handler中方法来处理消息更新视图.这种方式对于不是很频繁的调用是可取的.如果更新的较快,则消息处理会一直排队处理,这样显示会相对滞后.这个时候就可以考虑使用第二中方式,将需要执行的代码放到Runnable的run方法中,然后调用runOnUiThread()这个方法将Runnab

处于onStop的Activity的Handler仍然可用

假设当前Activity拥有一个Handler,当其启动另一个Activity时,即使自身处于onStop()状态,这个Handler仍然可以被使用并响应.