Android receiver 多次启动相同Activity
来源:互联网 发布:手机吉他教学软件 编辑:程序博客网 时间:2024/05/07 21:19
在Receiver中多次启动相同的Activity,如果Intent是相同的是不会重新创建Activity的,只有Intent内容不同时才会启动多个Activity。
TestActivity.java 代码段:
package com.example.gonglt1.ltestapp;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;/** * Created by gonglt1 on 2017/2/6. */public class TestActivity extends Activity { private static final String TAG = "glttest"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.e(TAG,"TestActivity :: onCreate"); } @Override protected void onResume() { super.onResume(); Log.e(TAG,"TestActivity :: onResume"); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Log.e(TAG,"TestActivity :: onNewIntent"); } @Override protected void onPause() { super.onPause(); Log.e(TAG,"TestActivity :: onPause"); } @Override protected void onStop() { super.onStop(); Log.e(TAG,"TestActivity :: onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.e(TAG,"TestActivity :: onDestroy"); }}
TestReceiver.java 代码段:
package com.example.gonglt1.ltestapp;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.media.AudioManager;import android.os.Handler;import android.util.Log;/** * Created by gonglt1 on 2017/1/22. */public class TestReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.e("glttest","TestReceiver :: onReceive"); Intent intent1 = new Intent(context, TestService.class); context.startService(intent1); } }
TestService.java 代码:
package com.example.gonglt1.ltestapp;import android.app.Service;import android.content.ContentUris;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.IBinder;import android.support.annotation.Nullable;import android.util.Log;/** * Created by gonglt1 on 2017/2/6. */public class TestService extends Service{ @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); } private static int i = 0; @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.e("glttest","TestService :: onStartCommmand"); Intent intent1 = new Intent(this, TestActivity.class); intent1.setData(ContentUris.withAppendedId( Uri.parse("content://" + "com" + "/instances"), i++)); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION); getApplicationContext().startActivity(intent1); return super.onStartCommand(intent, flags, startId); }}
通过cmd命令行发送广播:
adb shell am broadcast -a com.example.gonlt1.ltestapp.CMD_SEND_BROADCAST
查看log日志输出如下:
02-06 16:41:05.681 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestReceiver :: onReceive02-06 16:41:05.687 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestService :: onStartCommmand02-06 16:41:05.727 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onCreate02-06 16:41:05.732 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onResume02-06 16:41:11.148 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestReceiver :: onReceive02-06 16:41:11.149 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestService :: onStartCommmand02-06 16:41:11.158 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onPause02-06 16:41:11.169 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onCreate02-06 16:41:11.175 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onResume02-06 16:41:11.240 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onStop
如果注释掉TestService.java onStartCommand()方法中的这句代码:
Log.e("glttest","TestService :: onStartCommmand"); Intent intent1 = new Intent(this, TestActivity.class);// intent1.setData(ContentUris.withAppendedId( Uri.parse("content://" + "com" + "/instances"), i++)); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION); getApplicationContext().startActivity(intent1);
再次在cmd命令行中多次发送广播,log输出如下:
02-06 16:58:45.849 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestReceiver :: onReceive02-06 16:58:45.851 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestService :: onStartCommmand02-06 16:58:45.894 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onCreate02-06 16:58:45.903 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestActivity :: onResume02-06 16:58:48.840 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestReceiver :: onReceive02-06 16:58:48.840 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestService :: onStartCommmand02-06 16:58:54.755 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestReceiver :: onReceive02-06 16:58:54.756 31041-31041/com.example.gonglt1.ltestapp E/glttest: TestService :: onStartCommmand
从log中看到,只会启动一次TestActivity。
demo点击此处下载
0 0
- Android receiver 多次启动相同Activity
- Android启动apk时主activity多次调用
- 解决Android中多次点击启动多个相同界面的问题
- Android中多次点击启动多个相同界面的问题
- 解决Android中多次点击启动多个相同界面的问题
- 解决Android中多次点击启动多个相同界面的问题
- Android Activity& service&Broadcast receiver 生命周期
- Android不同方式启动导致重复启动相同的Activity的问题解决办法
- android 4.x receiver、services无法启动
- Brocast Receiver广播中启动Activity 关于报错 FLAG_ACTIVITY_NEW_TASK
- Android Activity---启动Activity
- Android Activity---启动Activity
- android listview 多次点击,响应跳转多次activity
- Android动态启用和禁用Component(activity,receiver,service)
- (转)Android:Activity/Service/Broadcast Receiver/Content Provider
- Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。
- Android动态启用和禁用Component(activity,receiver,service)
- Android四大组件:Activity、Service、Broadcast Receiver、Content Provider
- 亲们,你们的tomcat并发能到多少?
- mybatis select标签中resultMap和resultType作用区别
- iOS仿QQ分组效果
- CSS你可能还不知道的一些知识点
- ueditor在鼠标后面添加内容
- Android receiver 多次启动相同Activity
- Wireshark网络抓包(三)——网络协议
- linux中软链接和硬链接
- PAT甲级练习1007. Maximum Subsequence Sum (25)
- vue-prop父组件向子组件进行传值
- UINavigationBar和UINavigationItem的区别和联系
- 用Java连接sqlserver数据库引包后仍出现“java.lang.ClassNotFoundException”错误解决方法
- 1023. Have Fun with Numbers (20)
- Android开发——控件_ListView