Activity四种加载模式。Activity有四种加载模式:每次通过这种模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该实例Activity添加到当前Task栈中-这种模式不会启动新的Task,新Activity将被添加到原有的Task中。如果是A Activity跳转到B Activity,再跳转到A Activity,行为就和standard一样了,会在B Activity跳转到A Activity的时候创建A Activity的新实例,因为当时的栈顶不是A Activity实例。
我们看到,两个FirstActivity的序列号是不同的,证明从SecondActivity跳转到FirstActivity时生成了新的FirstActivity实例。在图中的下半部分是SecondActivity跳转到FirstActivity后的栈结构变化的结果,我们注意到,SecondActivity消失了,没错,在这个跳转过程中系统发现有存在的FirstActivity实例,于是不再生成新的实例,而是将FirstActivity之上的Activity实例统统出栈,将FirstActivity变为栈顶对象,显示到幕前。
1.什么是Activity 2.Activity生命周期3.Activity生命周期演示4.Activity之间的通信5.Activity之加载模式6.Activity的栈式管理。OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, FirstActivity.class);这就是singleTask模式,如果发现有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前。
加载模式分类及在哪里配置Activity有四种加载模式:1.standard :首先说standard模式,也就是默认模式,不需要配置launchMode。不过,singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:
Android下常见的内存泄露在这段代码中,我们使用了一个static的Drawable对象。这通常发生在我们需要经常调用一个Drawable,而其加载又比较耗时,不希望每次加载Activity都去创建这个Drawable的情况。当一个Drawable被附加到View时,这个View会被设置为这个Drawable的callback (通过调用Drawable.setCallback()实现)。这就意味着,这个Drawable拥有一个TextView的引用,而TextView又拥有一个Activity的引用。
核心的Intent Flag有:   FLAG_ACTIVITY_NEW_TASK   FLAG_ACTIVITY_CLEAR_TOP   FLAG_ACTIVITY_RESET_TASK_IF_NEEDED   FLAG_ACTIVITY_SINGLE_TOP   核心的特性有:   taskAffinity   launchMode   allowTaskReparenting   clearTaskOnLaunch   alwaysRetainTaskState   finishOnTaskLaunch  四种加载模式的区别  所属task的区别。这种实例化时一个task可以包括一个activity的多个实例;
^_^ 进入Activity2,然后到Activity1,我们看Log信息为: 03-01 14:50:08.144: ERROR/Activity2(371): Activity2 onCreated! HashCode=1156067168 TaskId=7 03-01 14:50:13.923: ERROR/Activity1(371): Activity1 onCreate! HashCode=1156107384 TaskId=7 我们看到,当本应用启动singleTask的Activity(Activity1)时,Activity1并没用另外启用一个任务。
Android开发小技巧Activity的android:launchMode (startard、singleTop、singleTask、singleInstance)onNewIntent:在singleTop下,不产生新实例直接再用某个Activity A1,需要得到来自哪个intent。public void onNewIntent(Intent intent){ super.onNewIntent(intent);
在Android开发中经常会碰到当用户通过菜单操作重新回到之前的某个Activity的时候,希望该Activity能回到之前的状态,而不是重新创建一遍,比如常用的main Activity。在android中activity的管理是用堆栈的方式。singleInstance当要创建新的activity时会在新的task中创建activity,即一个task中只能存在一个该activity的实例。http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.
Android中TextView的SetText()方法注意事项 忙活了一个下午才研究出来的。。。。学习Android的Intent时候跟着Mars老师做简单的乘法程序,在第一个activity输入两个正整数,通过一个intent跳转到第二个intent,在第二个activity中使用一个TextView的setText()方法显示乘法计算的结果,很简单是吧。原来第二个activity里面的TextView在调用setText()方法的时候出问题了。[java] view plain copy txtresult.setText(resultnum);;
2、如果打开的是主入口,且没有通过Intent.setFlag(Intent.FLAG_ACTIVITY_NEW_TASK)设置,则会把新的activity添加到当前的activity所在的task内。singleInstance类型的activity打开的activity如果不设置flag,默认也不会放在自己的task中,类型和设置flag为new_task是一样的,如果纯在应用对应的task,会放在这个task中(如例子中的task2),如果没有,则会创建一个新的task,把activity放进去。
/** * 1.得到传递过来的两个值* 2.两个数值相加 * 3.设置标签内容显示结果 */Intent intent=getIntent();//得到两个值并强制类型转换为整形int number1=Integer.parseInt(intent.getStringExtra("value1"));int number2=Integer.parseInt(intent.getStringExtra("value2"));textview=(TextView)findViewById(R.id.show);//做加法计算并显示出来textview.setText(number1+"+"+number2+"="+(number1+number2));
Google Android手机在美亮相 能否一举成功仍是未知数。据富比士(Forbes)杂志报导,Google对跨足智能型手机界的首款作品寄以极高的期望,除了希望开放原始码的Android操作系统能从此改变手机操作系统趋势之外,Google最终目的其实是预备以手机创造广告收益的另一高峰。打从Google舍弃现有的手机操作系统,决意自行开发Android平台那一刻起,就已开始为日后Android平台套用在线广告技术布局。
Android API Demo研究(3) - 编程 - goandroid.Android为透明效果提供了内置的Theme: android:style/Theme.Translucent,只需要把当前的activity的theme设置为这个Theme就可以达到完全透明的效果。 @drawable/translucent_background #fff
splashScreen.java.import android.content.import android.content.pm.import android.os.
// 每个任务都包含一个Tag,这个Tag保存着这个App的一些非常有用的信息 class RecentTag { ActivityManager.RecentTaskInfo info; Intent intent; }这里的Intent就是之前说的,重复使用的旧Intent了,这里注意,系统添加了FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY和FLAG_ACTIVITY_TASK_ON_HOME标志,所以我们可以在App中通过判断Intent的flag是否包含这两个来判断是否是从近期任务里启动的。
Android学习笔记(七):多个Activity和Intent.> <manifest ......> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Activity01" android:label="@string/app_name"> ...... </activity> <activity android:name=".OtherActivity" android:label="@string/other" /><!Intent intent = new Intent(Intent.
Android学习笔记(三):Andriod程序框架。import android.app.>
TextView textView1 = (TextView)findViewById(R.id.textview1);// 调用布局main Intent intent = getIntent(); // 得到传递过来的Intent,并且设置为text的value String value = intent.getStringExtra("name"); button1 = (Button) findViewById(R.id.button2); // 拿到button button1.setText("press me to textView1"); TextView textView1 = (TextView) findViewById(R.id.textview2); textView1.setText(value);
3、 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个LinearLayout和一个TextView(默认的布局文件中默认就有一个LinearLayout,所以不需要手动添加,新建的布局文件默认为空,所以需要手动添加)a) 让Activity继承android的Activity.e) 设置控件的值,这个值引用的是string.xml中的值,所以还需要在string.xml文件中设置(最好是使用string.xml中的值,以便实现国际化);这个在布局文件中也能设置;
Using the Android action bar (ActionBar)<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_settings" android:orderInCategory="100" android:showAsAction="always" android:title="Settings" /> <item android:id="@+id/menu_load" android:icon="@drawable/navigation_refresh" android:orderInCategory="200" android:showAsAction="always" android:title="Load"/></menu>
Android实战技巧之二十八:启动另一个App/apk中的Activity.public void OnStartActivityClicked(View view) { Intent intent = new Intent(Intent.//second method// intent.setComponent(new ComponentName(// "com.lazytech.projecta",// "com.lazytech.projecta.MainActivity"// ));intent.putExtra("pid", android.os.Intent intent = getIntent();} } public void OnSendResult(View view) { Intent intent = new Intent();
而Unity for Android打包直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码。import android.widget.Android文件夹中。
复制代码 代码如下: packagemobile.android.ch05.link.activity; importandroid.app.Activity; importandroid.content.Intent; importandroid.os.Bundle; importandroid.text.SpannableString; importandroid.text.Spanned; importandroid.text.method.LinkMovementMethod; importandroid.text.style.ClickableSpan; importandroid.view.View; importandroid.widget.TextView; publicclassMainextendsActivity {
两个android程序间的相互调用(apk互调)这是apk1跳转到apk2的得到的结果(注意上方apk的title)public class Demoapk1Activity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);和往常的xml一样,只有一点不同: