AndroidプログラミングのAppplicationグローバル変数と転送値の使用例の分析を設定します。


本明細書の例は、AndroidプログラミングのAppplicationがグローバル変数を設定し、値を送る方法について述べている。皆さんに参考にしてあげます。具体的には以下の通りです。

/**
*   Application,       onCreate  ,       ,
*           ,     javaeye         ,    ,
*       。                    ,   Activity
*               ,           ,  ,      。
*            ,                 。
* 
*   Application,       PID,    ID,   Activity         。
*      Application            ,        Activity       
*     ,     ,      Activity            ,     Activity 
*          ,        ?
* OK,            。。。
* @author yong.wang
*
*/
public class MyApplication extends Application {
  private String name;
  @Override
  public void onCreate() {
    super.onCreate();
    setName(NAME); //       
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  private static final String NAME = "MyApplication";
}

Ok、アプリケーションは作成されましたが、設定ファイルのApplication Manifest.xmlに実行するアプリケーションのMyAppplicationを追加して、修正してください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.hisoft.app"
  android:versionCode="1"
  android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name"
     android:name=".MyApplication">     ,           Application           MyApplication
  <activity android:name=".MyFirstActivity"
     android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <activity android:name=".MySecondActivity"></activity>
 </application>
 <uses-sdk android:minSdkVersion="8" />
</manifest>

xmlの設定ファイルがandroid:name=「.MyApplication」を実行し終わったら、ここでプロセスIDを割り当てました。次に、私たちはActivityを実行します。

public class MyFirstActivity extends Activity {
  private MyApplication app;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  app = (MyApplication) getApplication(); //         MyApplication
  Log.e("MyFirstActivityOriginal", app.getName()); //                ,            
  app.setName("is cool"); //OK,         
  Log.e("MyFirstActivityChanged", app.getName()); //   ,        
  Intent intent = new Intent(); //             Activity         ,      
  intent.setClass(this, MySecondActivity.class);
  startActivity(intent);
 }
}

上の運転が終わったら、このActivityにジャンプします。

public class MySecondActivity extends Activity {
  private MyApplication app;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    app = (MyApplication) getApplication(); //      
    Log.e("MySecondActivity", app.getName()); //     
  }  
}

もちろん、運転しました。
MyFirst ActivityOriginal    MyApplication
MyFirst ActivityChangd   is cool
MySecondActivity       is cool
見てください。とても興奮していませんか?もちろん退出してから運行する場合もあります。第2、3です。回、3つの出力がすべてis coolになる可能性があります。それはあなたが殺していないプロセスの問題です。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。