loadmessages.java
来自「moblie syncml mail javame」· Java 代码 · 共 184 行
JAVA
184 行
/*
* Funambol is a mobile platform developed by Funambol, Inc.
* Copyright (C) 2003 - 2007 Funambol, Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License version 3 as published by
* the Free Software Foundation with the addition of the following permission
* added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
* WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program; if not, see http://www.gnu.org/licenses or write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301 USA.
*
* You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
* 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
*
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU Affero General Public License version 3.
*
* In accordance with Section 7(b) of the GNU Affero General Public License
* version 3, these Appropriate Legal Notices must retain the display of the
* "Powered by Funambol" logo. If the display of the logo is not reasonably
* feasible for technical reasons, the Appropriate Legal Notices must display
* the words "Powered by Funambol".
*/
/*
* LoadMessages.java
*/
package com.funambol.mailclient.test;
import com.funambol.mail.Folder;
import com.funambol.mail.MailException;
import com.funambol.mail.Message;
import com.funambol.mail.Store;
import com.funambol.mailclient.config.ConfigException;
import com.funambol.mailclient.mm.MessageManager;
import com.funambol.mailclient.ui.controller.UIController;
import com.funambol.util.Log;
import java.io.IOException;
import java.util.Date;
import java.util.Vector;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import com.funambol.storage.Serializable;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import com.funambol.storage.ObjectStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStore;
/**
*
* A test midlet to measure the loading time of the messages in the inbox.
*
* This midlet is supposed to be launched after a sync has been performed with
* the standard application and some messages are stored in the rms.
*
* Pressing the start button will launch the test: the midlet will load the
* messages as the application does, and will return the time required
* for loading the messages (in msec) .
*
*/
public class LoadMessages extends MIDlet implements CommandListener {
//items
private Command startCommand;
private Command exitCommand;
private TextField statusTF;
public void startApp() {
Display.getDisplay(this).setCurrent(getTheForm());
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
notifyDestroyed();
}
/**
* creates the form
* @return the main form
*/
private Form getTheForm() {
Form f = new Form(" rms test ");
startCommand = new Command("Start", Command.OK, 0);
exitCommand = new Command("Exit", Command.EXIT, 0);
f.setCommandListener(this);
f.addCommand(startCommand);
f.addCommand(exitCommand);
f.append(getStatusTextField());
return f;
}
/**
* handle the command actions. if startCommand is selected, the test
* is performed, if exitcommand is selected, the app is closed
*
*/
public void commandAction(Command command, Displayable displayable) {
if (command == startCommand) {
startTest();
}
if (command == exitCommand) {
destroyApp(false) ;
}
}
private TextField getStatusTextField() {
if (statusTF == null) {
statusTF=new TextField("Status" ,"",10000, TextField.UNEDITABLE);
}
return statusTF;
}
/**
* run the test
*/
private void startTest() {
setStatus("Start!");
try {
setStatus("getting mm");
MessageManager mm = MessageManager.getInstance();
setStatus("init store");
mm.initStore(false);
setStatus("stating to load folderinfo");
Folder f= mm.getFolder(MessageManager.INBOX);
long memBefore = Runtime.getRuntime().freeMemory();
long before = System.currentTimeMillis();
setStatus("folder loaded at " + before + ", getting list");
Message[] list = f.getMsgHeaders();
long after = System.currentTimeMillis();
long memAfter = Runtime.getRuntime().freeMemory();
int avgSize = (int)(memBefore-memAfter)/list.length;
Log.error("Average message size: " + avgSize);
setStatus("loaded " + list.length + " messages in "
+ (after - before) + " msec" + "\nAverage message size "
+ avgSize);
} catch (MailException ex) {
ex.printStackTrace();
setStatus("Mailexception");
}
}
private void setStatus(String s) {
//error level to be sure to log it.
Log.error("[LoadMessagesTest] " + s);
getStatusTextField().setString(s);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?