首页 > 编程知识 正文

read phone state权限,单activity

时间:2023-05-04 19:17:25 阅读:114779 作者:1011

1 .定义全局变量

themoregeneralproblemyouareencounteringishowtosavestateacrossseveralactivitiesandallpartsofyourapplication.astaticvarivable (tiourable a singleton (isacommonjavawayofachievingthis.ihavefoundhowever,thatamoreelegantwayinandroidistoassociateyourstate

-在整个APP应用程序中使用时,java通常使用静态变量,而android提供了比使用应用程序上下文更优雅的方法。

As you know,each Activity is also a Context,whichisinformationaboutitsexecutionenvironmentinthebroadestsense.youraplicationalstional

-每个Activity都是上下文,其中包含运行时的一些状态。 安卓保证它是一个单实例。

thewaytodothisistocreateyourownsubclassofandroid.app.application, andthenspecifythatclassintheapplicationtaginyourmanifest.nowandroidwillautomaticallycreateaninstanceofthatclasssandmakeitavaivaifest on.youcanaccessitfromanycontextusingthecontext.getapplicationcontext (method )活动支持服务

-方法是创建属于您自己的android.app.Application子类,然后在manifest中创建名为kkdhb的类。 这将创建一个android可以为此全局使用的实例。 您可以在其他任何地方使用Context.getApplicationContext

举个例子:

类myapp扩展应用程序{

隐私字符串状态;

公共字符串获取状态

返回状态;

}

公共语音设置(字符串) {

myState=s;

}

}

class blah扩展活动{

@Override

公共语音开启(bundleb ) {

.

myapp应用程序=() myapp ) getApplicationContext );

String state=appState.getState (;

.

}

}

thishasessentiallythesameeffectasusingastaticvariableorsingleton,utintegratesquitewellintotheexistingandroidframework.noted

-此效果与使用静态变量相同,但符合android体系结构。

注意APP必须在manifest中注册(

package com.xesam;

导入安卓. app.application;

import Android.content.RES.configuration;

导入安卓. util.log;

公共课堂

s ApplicationActivity extends Application {

static String name = "小西山子";

@Override

public void onCreate() {

Log.v("ApplicationActivity","onCreate");

super.onCreate();

}

@Override

public void onTerminate() {

Log.v("ApplicationActivity","onTerminate");

super.onTerminate();

}

@Override

public void onConfigurationChanged(Configuration newConfig) {

Log.v("ApplicationActivity","onConfigurationChanged");

super.onConfigurationChanged(newConfig);

}

@Override

public void onLowMemory() {

Log.v("ApplicationActivity","onLowMemory");

super.onLowMemory();

}

}

主要Activity:

package com.xesam;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.util.Log;

import android.view.ViewGroup.LayoutParams;

import android.widget.LinearLayout;

import android.widget.TextView;

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

Log.v("MainActivity","onCreate");

super.onCreate(savedInstanceState);

ApplicationActivity app = (ApplicationActivity)this.getApplication();

LinearLayout main = new LinearLayout(this);

main.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

main.setOrientation(LinearLayout.VERTICAL);

TextView tv = new TextView(this);

tv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

tv.setText(app.name);

tv.setTextColor(Color.BLUE);

main.addView(tv);

setContentView(main);

}

@Override

public void onDestroy(){

Log.v("MainActivity","onDestroy");

super.onDestroy();

//System.exit(0);

}

}

AndroidManifest.xml:

package="com.xesam"

android:versionCode="1"

android:versionName="1.0" >

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:name="ApplicationActivity">

android:name=".MainActivity"

android:label="@string/app_name" >

这里我们自定义了一个Application,所以必须指定AndroidManifest.xml中application的android:name属性(默认是android.app.Application)。

输出结果:

"ApplicationActivity","onCreate"

"MainActivity","onCreate"

"MainActivity","小西山子"

"ApplicationActivity","onConfigurationChanged"

退出之后打印结果:

"MainActivity","onDestroy"

从模拟器再次开启应用(没有再次编译)之后,打印结果

"MainActivity","onCreate"

"MainActivity","小西山子"

所以后退的时候并没有关闭application,要强制关闭application,可以在MainActivity的onDestroy中调用System.exit(0)

@Override

public void onDestroy(){

Log.v("MainActivity","onDestroy");

super.onDestroy();

System.exit(0);

}

这样就完全退出程序了。

回到application的问题上来,显然,application的onCreate在activity的onCreate之前执行了,所以整个应用的最初入口是这个方法。

onCreate作用说明:

/**

* Called when the application is starting, before any other application

* objects have been created.  Implementations should be as quick as

* possible (for example using lazy initialization of state) since the time

* spent in this function directly impacts the performance of starting the

* first activity, service, or receiver in a process.

* If you override this method, be sure to call super.onCreate().

*/

可以认为Activity,service以及其他的组件共同构成了一个application的环境,因此application中可以共享或者初始化一些全局变量,比如地图(百度地图demo就是这么做的)。

注:eclipse查看源码的方法:

下载android版本对应的源码【2.2版本地址:http://rgruet.free.fr/public/android-2.2-froyo-src.zip】

解压缩到 /usr/local/android-sdk-linux/platforms/android-8下,然后修改同目录下source.properties文件中的Pkg.SourceUrl为刚才解压的源码目录就行了

一个示例(我下载的源码放在/usr/local/android-sdk-linux/platforms/android-8/source目录中,所以Pkg.SourceUrl=sources):

### Android Tool: Source of this archive.

#Mon Apr 23 01:14:48 CST 2012

Layoutlib.Api=4

Layoutlib.Revision=0

Pkg.Desc=Android SDK Platform 2.2_r3

Archive.Arch=ANY

Platform.Version=2.2

Pkg.DescUrl=http://developer.android.com/sdk/

Platform.MinToolsRev=8

Archive.Os=ANY

Pkg.SourceUrl=sources

Pkg.Revision=3

AndroidVersion.ApiLevel=8

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。