⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 midletstate.java

📁 用于移动设备上的java虚拟机源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * Signals the <code>MIDlet</code> to terminate and enter the     * <i>DESTROYED</i> state.     * In the destroyed state the <code>MIDlet</code> must release     * all resources and save any persistent state. This method may     * be called from the <i>PAUSED</i> or     * <i>ACTIVE</i> states. <p>     * <code>MIDlet</code>s should     * perform any operations required before being terminated, such as     * releasing resources or saving preferences or     * state. <p>     *     * <b>NOTE:</b> The <code>MIDlet</code> can request that it not enter     * the <i>DESTROYED</i>     * state by throwing an <code>MIDletStateChangeException</code>. This     * is only a valid response if the <code>unconditional</code>     * flag is set to <code>false</code>. If it is <code>true</code>     * the <code>MIDlet</code> is assumed to be in the <i>DESTROYED</i>     * state regardless of how this method terminates. If it is not an     * unconditional request, the <code>MIDlet</code> can signify that it     * wishes     * to stay in its current state by throwing the      * <code>MIDletStateChangeException</code>.     * This request may be honored and the <code>destroy()</code>     * method called again at a later time.     *     * @param unconditional If true when this method is called,     * the <code>MIDlet</code> must cleanup and release all resources.     * If false the <code>MIDlet</code> may throw      * <CODE>MIDletStateChangeException</CODE>     * to indicate it does not want to be destroyed at this time.     *     * @exception MIDletStateChangeException is thrown if the     * <code>MIDlet</code> wishes to continue to execute      * (Not enter the <i>DESTROYED</i> state).     * This exception is ignored if <code>unconditional</code>     * is equal to <code>true</code>.     */    protected abstract void destroyApp(boolean unconditional)	throws MIDletStateChangeException;    /**     *     * Used by a <code>MIDlet</code> to notify the application management     * software that it has entered into the     * <i>DESTROYED</i> state.  The application management software will not     * call the MIDlet's <code>destroyApp</code> method, and all resources     * held by the <code>MIDlet</code> will be considered eligible for     * reclamation.     * The <code>MIDlet</code> must have performed the same operations     * (clean up, releasing of resources etc.) it would have if the     * <code>MIDlet.destroyApp()</code> had been called.     *     */    public final void notifyDestroyed() {	synchronized (mutex) {	    state = DESTROYED;	    mutex.notify();	}    }    /**     * Used by a <code>MIDlet</code> to notify the application management     * software that it has entered into the <i>PAUSED</i> state.     * Invoking this method will     * have no effect if the <code>MIDlet</code> is destroyed,     * or if it has not yet been started. <p>     * It may be invoked by the <code>MIDlet</code> when it is in the     * <i>ACTIVE</i> state. <p>     *     * If a <code>MIDlet</code> calls <code>notifyPaused()</code>, in the     * future its <code>startApp()</code> method may be called make     * it active again, or its <code>destroyApp()</code> method may be     * called to request it to destroy itself.     */    public final void notifyPaused() {        int oldState;	synchronized (mutex) {            oldState = state;            // do not notify the scheduler, since there is nothing to do            setStateWithoutNotify(PAUSED);	}        // do work outside of the mutex        if (oldState == ACTIVE) {            displayManager.deactivate(getMIDlet());        }    }    /**     * Provides a <code>MIDlet</code> with a mechanism to retrieve     * <code>MIDletSuite</code> for this MIDlet.     *     * @return MIDletSuite for this MIDlet     */    public final MIDletSuite getMIDletSuite() {	return scheduler.getMIDletSuite();    }    /**     * Used by a <code>MIDlet</code> to notify the application management     * software that it is     * interested in entering the <i>ACTIVE</i> state. Calls to     * this method can be used by the application management software to     * determine which applications to move to the <i>ACTIVE</i> state.     * <p>     * When the application management software decides to activate this       * application it will call the <code>startApp</code> method.     * <p> The application is generally in the <i>PAUSED</i> state when this is     * called.  Even in the paused state the application may handle     * asynchronous events such as timers or callbacks.     */    public final void resumeRequest() {        setState(PAUSED_RESUME);    }    /**     * Requests that the device handle (e.g. display or install)     * the indicated URL.     *     * <p>If the platform has the appropriate capabilities and     * resources available, it SHOULD bring the appropriate     * application to the foreground and let the user interact with     * the content, while keeping the MIDlet suite running in the     * background. If the platform does not have appropriate     * capabilities or resources available, it MAY wait to handle the     * URL request until after the MIDlet suite exits. In this case,     * when the requesting MIDlet suite exits, the platform MUST then     * bring the appropriate application to the foreground to let the     * user interact with the content.</p>     *     * <p>This is a non-blocking method. In addition, this method does     * NOT queue multiple requests. On platforms where the MIDlet     * suite must exit before the request is handled, the platform     * MUST handle only the last request made. On platforms where the     * MIDlet suite and the request can be handled concurrently, each     * request that the MIDlet suite makes MUST be passed to the     * platform software for handling in a timely fashion.</p>     *     * <p>If the URL specified refers to a MIDlet suite (either an     * Application Descriptor or a JAR file), the request is     * interpreted as a request to install the named package. In this     * case, the platform's normal MIDlet suite installation process     * SHOULD be used, and the user MUST be allowed to control the     * process (including cancelling the download and/or     * installation). If the MIDlet suite being installed is an     * <em>update</em> of the currently running MIDlet suite, the     * platform MUST first stop the currently running MIDlet suite     * before performing the update. On some platforms, the currently     * running MIDlet suite MAY need to be stopped before any     * installations can occur.</p>     *     * <p>If the URL specified is of the form     * <code>tel:&lt;number&gt;</code>, as specified in <a     * href="http://rfc.net/rfc2806.html">RFC2806</a>, then the     * platform MUST interpret this as a request to initiate a voice     * call. The request MUST be passed to the &quot;phone&quot;     * application to handle if one is present in the platform.</p>     *     * <p>Devices MAY choose to support additional URL schemes beyond     * the requirements listed above.</p>     *     * <p>Many of the ways this method will be used could have a     * financial impact to the user (e.g. transferring data through a     * wireless network, or initiating a voice call). Therefore the     * platform MUST ask the user to explicitly acknowlege each     * request before the action is taken. Implementation freedoms are     * possible so that a pleasant user experience is retained. For     * example, some platforms may put up a dialog for each request     * asking the user for permission, while other platforms may     * launch the appropriate application and populate the URL or     * phone number fields, but not take the action until the user     * explicitly clicks the load or dial buttons.</p>     *     * @return true if the MIDlet suite MUST first exit before the     * content can be fetched.     *     * @param URL The URL for the platform to load.     *     * @exception ConnectionNotFoundException if     * the platform cannot handle the URL requested.     *     * @since MIDP 2.0     */    public native final boolean platformRequest(String URL);    /**     * Change the state and notify.     * Check to make sure the new state makes sense.     * Changes to the status are protected by the mutex.     * Any change to the state notifies the mutex.     *     * @param newState new state of the MIDlet     */    void setState(int newState) {	synchronized (mutex) {            setStateWithoutNotify(newState);            mutex.notify();	}    }    /**     * Get the status of the specified permission.     * If no API on the device defines the specific permission      * requested then it must be reported as denied.     * If the status of the permission is not known because it might     * require a user interaction then it should be reported as unknown.     *     * @param permission to check if denied, allowed, or unknown.     * @return 0 if the permission is denied; 1 if the permission is allowed;     * 	-1 if the status is unknown     */    public int checkPermission(String permission) {        return getMIDletSuite().checkPermission(permission);    }            /**     * Change the state without notifing the scheduler.     * Check to make sure the new state makes sense.     * <p>     * To be called only by the scheduler or MIDletState while holding     * the scheduler mutex.     *     * @param newState new state of the MIDlet     */    void setStateWithoutNotify(int newState) {        switch (state) {        case DESTROYED:            // can't set any thing else            return;                case DESTROY_PENDING:            if (newState != DESTROYED) {                // can only set DESTROYED                return;            }                        break;        case PAUSED:            if (newState == PAUSE_PENDING) {                // already paused by app                return;            }            break;        case ACTIVE:            if (newState == PAUSED_RESUME || newState == ACTIVE_PENDING) {                // already active                return;            }        }        state = newState;    }    /**     * Get the state.     *     * @return current state of the MIDlet.     */    int getState() {	synchronized (mutex) {	    return state;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -