我已阅读Google Android Developer页面,但任务的概念(http://developer.android.com/guide/components/tasks-and-back-stack.html)确实让我感到困惑.
在我读到SingleTask和SingleInstance之后,我变得更加困惑.
我想通过一些例子提出一些问题,希望我能从这些问题中得到更好的理解:
假设我有2个应用程序A和B,A有x,y,z活动; B有1,2,3个活动:
假设他们的启动模式是标准(不使用任何意图标志).而x是app A的主要活动; 1是应用程序B的主要活动.
1)启动应用程序A,然后x-> y - > 1,按主页按钮,再次启动应用程序A,我们将看到活动y或1?
2)启动app A然后x - > 1 - > y - > 2 - > z - > 3,按home键,启动app A,它将包含所有活动(x - > 1 - > y - > 2 - > z - > 3),还是只包含x - > y - > z?如果我们现在推出应用B怎么样?应用B包含哪些活动?
现在让我们说活动1,2,3是SingleTask; x,y,z仍为标准:
3)启动应用程序A,然后x - > y - > 1 - > 2,按主页按钮,启动应用程序A,它将包含x - > y或它包含x - > y - > 1 - > …
我尝试将猴子集成到我的APP中,而以下错误总是会出现:
10-13 09:16:24.682: INFO/System.out(274): :Monkey: seed=0 count=500...
10-13 09:16:24.682: INFO/System.out(274): :Monkey: seed=0 count=500...
10-13 09:16:24.704: INFO/System.out(274): :AllowPackage: org.example.tabdemo...
10-13 09:16:24.712: INFO/System.out(274): AllowPackage: org.example.tabdemo...
10-13 09:16:24.723: INFO/System.out(274): :IncludeCategory: android.intent.category.LAUNCHER...
10-13 09:16:24.762: INFO/System.out(274): IncludeCategory: android.intent.category.LAUNCHER...
10-13 09:16:24.773: INFO/System.out(274): :IncludeCategory: android.intent.category.MONKEYER...
10-13 09:16:24.783: INFO/System.out(274): IncludeCategory: android.intent.category.MONKEYER...
10-13 09:16:24.872: WARN/ActivityManager(58): Permission Denial: setActivityController() from pid=290, uid=10036 requires android.permission.SET_ACTIVITY_WATCHER
10-13 09:16:24.903: DEBUG/AndroidRuntime(290): Shutting down VM
10-13 09:16:24.912: WARN/dalvikvm(290): threadid=1: thread exiting with uncaught
exception (group=0x4001d850)
10-13 09:16:25.112: ERROR/AndroidRuntime(290): *** FATAL EXCEPTION IN SYSTEM PROCESS: main …Run Code Online (Sandbox Code Playgroud) Android问题:此问题仅在安装后第一次出现并单击打开按钮,启动带有启动器图标的应用程序后,将永远不会出现问题.
重现问题的步骤.
发生了什么.
我已经解释了安装后的一般行为,并使用打开按钮启动应用程序.在我的应用程序中,它创建了2次启动应用程序的不一致状态.
你认为正确的行为应该是什么.
我有一些日志..
10-04 21:45:28.703:INFO/ActivityManager(243):从pid 15146开始活动:Intent {act = android.intent.action.MAIN flg = 0x10000000 cmp = com.test/.TestnewversionActivity}.
"看不到上面意图中添加的类别"
10-04 21:46:46.109:INFO/ActivityManager(243):开始活动:意图{act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = com.test /来自pid 428的.TestnewversionActivity}
"参见上面意图中添加的类别".
如果有人告诉我如何解决这个或告诉我如何在"打开"按钮上添加类别android.intent.category.LAUNCHER点击然后问题将解决.
我试图在app start,oncreate和很多地方添加意图类别.intent.addCategory( "android.intent.category.LAUNCHER"); 还尝试使用IntentFilter,PackageManager.
这个问题出现在每部Android手机中.
我已经在HTC-SENSE Android版本2.3.3上使用了Logs
在ListView我使用setOnItemClickListener()和setOnItemLongClickListener().当我点击一个项目时它工作正常,但是当我长按一个项目时,有时两个听众同时被解雇或同时工作.为什么?
/**
* on click of list view item show the run time webview.
*/
mListViewStar.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
isHome = true;
Animation translate1 = AnimationUtils.loadAnimation(Home.this,
R.anim.tran_right);
mRelativeLayout.setVisibility(View.GONE);
mRelativeLayout.startAnimation(translate1);
// mProgressBar.setVisibility(View.VISIBLE);
mProgressDialog = ProgressDialog.show(Home.this, "",
"Loading...");
addWebView(mArrayListJBSelectedUrls.get(arg2)
.getStrSelectedWebsiteUrl().toString(), arg2);
}
});
/**
* on long press delete item from list view
*/
mListViewStar.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int …Run Code Online (Sandbox Code Playgroud) 注意:即使系统在停止时破坏了您的活动,它仍然保留状态
Bundle中的View对象(例如EditText中的文本)(一对键值对),如果用户导航回活动的同一个实例,则恢复它们 (下一课讲述有关使用Bundle的更多信息)保存其他状态数据,以防您的活动被销毁和重新创建).
同一个活动的实例
它是如何被破坏和重新创建的确切实例,它不是一个新的内存块(另一个实例),任何人都可以帮我清除这一点吗?
我只是接近Android服务,但我有很多疑问.这里有一些问题.在开始之前,请注意我已阅读那些页面 Android服务(官方) 有界服务(官方) 加上我的语言的内部课程理论.请耐心等待,我仍然有点困惑.
1)首先,服务区别于AsyncTask主要是因为如果应用程序暂停(即用户正在观看另一个应用程序),它也会继续运行; 在这种情况下,AsyncTask会停止.可以,还是我错了?2)服务在通过startService()启动它的活动的同一个线程中运行.为了不影响Activity的性能,我必须为该服务创建一个单独的线程,例如实现Runnable接口.另一种方法是创建一个扩展IntentService的服务,它自动为服务提供一个新线程:在任何onHandleIntent()调用上创建一个新线程.
现在,让我们来看看我的具体问题.我需要创建一个将被许多活动使用的服务:他的任务是每隔60秒连接到服务器数据库并检查新闻.如果找到新闻,请通知新消息(如果我们在MainActivity上)或显示新消息的标题(如果我们在新闻阅读器中).我该怎么编码呢?我做了一个MainActivity来实例化一个NewsService并立即调用startService().另一方面,我有NewsService扩展IntentService,(当调用onHandleIntent时创建一个新线程?)并寻找新消息.使用IntentService是个坏主意吗?我意识到启动无限期调用startService()的服务会非常难看.在这个练习的开始我认为它是一个很好的解决方案,因为它自动创建一个新的线程,并使Service实现简单.但现在我有些疑惑(我不知道是否有新闻!MainActivity如何知道它?以及如何获得标题)
这应该使用普通的扩展Thread类来完成,它在它的run()方法中创建一个无限的cicle,每隔60秒检查一次新闻,如果有新的,则从远程DB读取标题并更新活动按钮/视图.然后,如果应用程序将被用户关闭,则服务也将关闭.但问题是,如果我正在修改这样的类,当MainActivity暂停或停止时,它的工作将停止,而其他活动(在这种情况下为NewsReader)无法获得任何更新,因为此新线程目前没有获得新闻.所以我需要一个服务.
我希望它很清楚.我该如何以正确的方式实施解决方案?请突出我的文字中的所有错误,我真的需要学习:D
1-是我的第一个活动(主要)2-是我的第二个活动3 - 是我的第三个活动
我想从1开始运行2然后运行2运行3,然后从3运行数据并将其返回到1.希望你们明白的人.
这是我的代码:
Runing 2 form 1 liek:
Intent intent = new Intent(getApplicationContext(),MessageBox.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent,5);
Run Code Online (Sandbox Code Playgroud)
然后像这样从2运行3:
Intent intent = new Intent(getApplicationContext(),ImageReceiver.class);
startActivityForResult(intent,5);
Run Code Online (Sandbox Code Playgroud)
然后在3我有这样的事情:
setResult(10);
finish();
Run Code Online (Sandbox Code Playgroud)
所以我在2中设置结果得到这个结果我有:
if(requestCode==5)
{
if(resultCode==10)
{
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
setResult(5,intent);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在1我得到:
if(requestCode==5)
{
if(resultCode==5)
{
//here i am taking data from 3
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我甚至无法在logcat中打开2 coz我得到:
04-23 22:13:15.579:E/AndroidRuntime(15313):android.util.AndroidRuntimeException:使用FORWARD_RESULT_FLAG同时请求结果
我真的不知道该怎么办.请看这个代码.
我需要requestLocationUpdates()在一个单独的线程中,以便不阻止我的应用程序的其余部分(它将在大多数时间运行).最好的方法是什么?
在运行 Android 7.0 的三星设备(J7 和 S7)上发生崩溃。
我已经构建了一个很小的测试应用程序并且可以重现崩溃。SingleActivity扩展Activity(不是AppCompatActivity),简单的布局,包含一个EditText带有inputType="text". 目标 SDK 为 8。
将光标定位在 中EditText并键入时,会建议单词并为单词加下划线。单击某些带下划线的单词或在 中完成编辑EditText,然后返回到EditText。输入一些数据并在 内部单击后EditText,应用程序将因以下堆栈跟踪而崩溃:
06-01 18:56:37.990 10339-10339/sharpmind.de.samsungtest W/ResourceType: No package identifier when getting value for resource number 0x00000000
06-01 18:56:37.991 10339-10339/sharpmind.de.samsungtest D/AndroidRuntime: Shutting down VM
06-01 18:56:37.992 10339-10339/sharpmind.de.samsungtest E/AndroidRuntime: FATAL EXCEPTION: main
Process: sharpmind.de.samsungtest, PID: 10339
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:202)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2970)
at android.content.res.Resources.getLayout(Resources.java:1986)
at android.view.LayoutInflater.inflate(LayoutInflater.java:425)
at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
at …Run Code Online (Sandbox Code Playgroud) 我的理解是,现有的“屏幕关闭”和“打开”意图并不完全表示设备分别处于睡眠和唤醒状态。设备上的所有应用程序都拥有部分唤醒锁,设备将不会进入深度睡眠状态,但屏幕可能会关闭/打开。
是否有意图收听CPU“ WAKE UP”和“ SLEEP”?
有什么办法,我们知道CPU从深度睡眠中唤醒了吗?