如何在android中进行本地通知?

时间:2011-03-18 09:03:33

标签: android

public class ChildLock extends Activity implements OnClickListener
{
    ProgressDialog dialog;
    int increment;
    int maximum ;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button startbtn = (Button) findViewById(R.id.startbtn);
        startbtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) 
    {
     EditText et = (EditText) findViewById(R.id.increment);
        // convert the text value to a integer
        increment = Integer.parseInt(et.getText().toString());

        dialog = new ProgressDialog(this);
        dialog.setCancelable(true);
        dialog.setMessage("Loading...");
        // set the progress to be horizontal
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // reset the bar to the default value of 0
        dialog.setProgress(0);

        // get the maximum value
        EditText max = (EditText) findViewById(R.id.maximum);
        // convert the text value to a integer
          maximum = Integer.parseInt(max.getText().toString());
        // set the maximum value
        dialog.setMax(maximum);
        // display the progressbar
        dialog.show();

        // create a thread for updating the progress bar
        Thread background = new Thread (new Runnable() {
           public void run() 
           {
               try 
               {
                     while(dialog.getProgress()<= dialog.getMax()) 
                   {
                       // wait 500ms between each update
                       Thread.sleep(500);
                       // active the update handler
                       progressHandler.sendMessage(progressHandler.obtainMessage());
                   }
            }
               catch (java.lang.InterruptedException e) 
               {
                   // if something fails do something smart
               }
           }
        });
        background.start();
    }

    // handler for the background updating
    Handler progressHandler = new Handler()
    {
        public void handleMessage(Message msg) 
        {
            if(dialog.getProgress()== dialog.getMax())
            {
                Intent i = new Intent(ChildLock.this, notifi.class);
                   startActivity(i);

            }
            dialog.incrementProgressBy(increment);
        }

    };

}

1 个答案:

答案 0 :(得分:0)

如果您在一个线程中运行进度条,通常如下所示 那么你必须从这个线程

传递消息到UI线程
     public class MyActivity extends Activity {
             private static final int PROGRESS = 0x1;

             private ProgressBar mProgress;
             private int mProgressStatus = 0;

         private Handler mHandler = new Handler();

         protected void onCreate(Bundle icicle) {
             super.onCreate(icicle);

             setContentView(R.layout.progressbar_activity);

             mProgress = (ProgressBar) findViewById(R.id.progress_bar);

             // Start lengthy operation in a background thread
             new Thread(new Runnable() {
                 public void run() {
                     while (mProgressStatus < 100) {
                         mProgressStatus = doWork();
                          mProgress.setProgress(mProgressStatus);
                        }
                        //pass messege to UI thread
                         Message msg=new Message();
                         msg.obj="your text";
                         mHandler.sendMessage(msg);

                         });
                     }
                 }
             }).start();
         }
     }

并且你的mHandler会像这样通知

mHandler = new Handler() { 
              @Override public void handleMessage(Message msg) { 
                 String i=(String)msg.obj;
                 Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
              }
          };

之后粘贴此代码 你的进度条线程的while循环

while(dialog.getProgress()<= dialog.getMax()){
   .......... 
  }

Message msg=new Message();
msg.obj="your text";
mHandler.sendMessage(msg);

并在onCreate()方法

创建mHandler