我想知道 - 和方法有什么区别?onCreate()onStart()
我认为这onStart()是一种多余的方法.onCreate()总是会被召唤(至少在我的最后两个项目中).
任何人都可以解释这个区别吗?
我在我的应用程序中设置onStart方法时遇到问题.它总是有一个删除线,说"这个方法在API级别5中已被弃用.我需要onStart,而不是onStartCommand.
我该如何解决这个问题?
MyNotificationService.java
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
public class MyNotificationService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(this, "OnCreate()", Toast.LENGTH_SHORT).show();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "OnDestroy()", Toast.LENGTH_SHORT).show();
}
@Override
@Deprecated
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
}
}
Run Code Online (Sandbox Code Playgroud)
Reminder_2.java …
我有一个有3个活动的应用程序.
我有主要的活动.这将调用第二个活动,然后调用第三个活动.我想在不进入onCreate的情况下返回主活动.
这是第三个活动的代码:
startActivity(new Intent(TerceraActiviry.this, Main.class));
Run Code Online (Sandbox Code Playgroud) 我正在为android(2.1> 3.1)编写一个应用程序,我想使用熟悉的做法,在Honeycomb应用程序中使用应用程序图标进行家庭活动,但是,当我在早期的非Honeycomb设备上运行活动时Activity.getActionBar(); 方法尚不存在,app force关闭,如果设备运行蜂窝,我怎么才能运行这个指定的代码?
@Override
protected void onStart() {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助,祝您度过愉快的一天.
我刚开始学习Azure的技术细节,所以如果这是一个愚蠢的问题,请道歉.
如果我在visual studio中创建一个云服务项目并为mvc应用程序添加webrole,在mvc应用程序中我可以看到"WebRole.cs"文件.但是,当我以MVC应用程序作为起点,然后想要为Azure启用它时,通过右键单击项目并选择"添加Windows Azure云服务项目",不会创建WebRole.cs.
那么我将在WebRole的开始事件中将事情发生在哪里?Global.asax文件的Application_Start()事件?
如果是这样,Global.asax中的Application_Start()和webrole的onStart()方法之间有什么区别?
我发现了以下帖子,其中提供了部分解释: 什么首先启动Application_Start或WebRole的OnStart?
因此,如果WebRole的onStart事件发生在Global.asax中的Application_Start()之前,如果我想在项目中的onStart()事件上运行一些代码,我之后启用了应用程序Azure的?
我成功地在CustomViewPager的开头创建了一个动画,它就像一个Carousel.所以在这里,我的物品来自左侧,并在3秒内向右移动.事情是它只是一个翻译我想知道是否可以让我的viewpager从远处滚动到他的最终位置.
你有没有办法做到这一点?问候.
编辑:所以我尝试了其他的东西,我创建了自定义ScrollToAnimation.我成功地创造了我想要的东西但运动不顺畅你能帮助我吗?我的新代码:
import android.support.v4.view.ViewPager;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import java.util.Calendar;
public class ScrollToAnimation extends Animation {
private int currentIndex = 0, nbChilds = -1, deltaT = 0;
private float fromX, toX;
private long animationStart;
private ViewPager viewpager;
public ScrollToAnimation(ViewPager viewpager, float fromX, float toX, int duration) {
this.viewpager = viewpager;
this.fromX = fromX;
this.toX = toX;
nbChilds = viewpager.getChildCount();
deltaT = duration / nbChilds;
setDuration(duration);
animationStart = Calendar.getInstance().getTimeInMillis();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t); …Run Code Online (Sandbox Code Playgroud) 我一直试图在上周左右开始工作,但仍然不知道问题是什么.它适用于Android 2.1但不适用于4.1.我已经在服务中找到了这个字符串,检查我的应用程序中的更新.
latestVersion = Integer.parseInt(getHttpString(urlLatestVersion));
Run Code Online (Sandbox Code Playgroud)
它在checkForUpdate()中调用; 在onStart中调用(Intent intent,int startId);.
private String getHttpString(String urlString) throws IOException {
InputStream in = null;
int response = -1;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try {
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
}
} catch (Exception ex) {
ex.printStackTrace();
//
//main error currently lies here
// TODO …Run Code Online (Sandbox Code Playgroud) android onstart httpurlconnection android-asynctask networkonmainthread
您是否应该通过光标获取数据并填写屏幕上的数据,例如设置窗口标题,onStart()或onResume()?
onStart()似乎是合乎逻辑的地方,因为在onStart()活动已经可以显示之后,尽管在后台.值得注意的是,我遇到了托管对话框的问题,这让我重新考虑了这一点.如果用户旋转屏幕,而对话仍然是开放的,onCreateDialog()并且onPrepareDialog()被称为之间 onStart()和onResume().如果对话框需要基于您之前需要拥有数据的数据onResume().
如果我是正确的onStart()那么为什么Notepad示例通过这样做给出了一个坏的例子onResume()?请参阅http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NoteEditor.html NoteEditor.java第176行(title = mCursor.getString...).
此外,如果我的Activity启动另一个Actvity/Dialog,它会更改我的光标正在跟踪的数据.即使在最简单的情况下,这是否意味着我必须手动更新我之前的屏幕(主要活动中的对话框的监听器),或者我必须注册ContentObserver,因为我不再更新数据onResume()(虽然我当然可以更新两次)?
我知道这是一个基本的问题但是最近的对话令我意外,让我意识到这一点.
在Android上尝试我的全新服务之后我得到了这个:
我猜是与清单文件和权限相关的东西,服务在最后一个活动之后启动,更新服务器上的数据并检索新数据并在android上的sqlite上保存id:
这里还有清单文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ggservice.democracy"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.ggservice.democracy.MainActivity"
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:label="@string/app_name" android:name="com.ggservice.democracy.sondaggioActivity"/>
<activity android:label="@string/app_name" android:name="com.ggservice.democracy.domandeDiCategoria"/>
<service android:name="com.ggservice.democracy.updateDemocracyService" />
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
logcat:
01-02 15:33:30.960: W/dalvikvm(2570): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
01-02 15:33:31.160: E/AndroidRuntime(2570): FATAL EXCEPTION: main
01-02 15:33:31.160: E/AndroidRuntime(2570): java.lang.RuntimeException: Unable to start service com.ggservice.democracy.updateDemocracyService@412f0c60 with Intent { cmp=com.ggservice.democracy/.updateDemocracyService }: android.os.NetworkOnMainThreadException
01-02 15:33:31.160: E/AndroidRuntime(2570): …Run Code Online (Sandbox Code Playgroud) 我还是Android编程的新手,所以这个问题很基础.我在Internet上看到许多代码示例,其中UI组件(如a TextView)正在初始化并在onCreate()Activity 的方法中访问.
当我使用Android Studio来创建一个新的项目- FirstApp-使用默认设置,一个空白的活动叫做MainActivity带来与它一起activity_main和fragment_main,我可以马上编译此为APK,部署我的设备上,我也得到一个屏幕,标题" FirstApp"和左上角的TextView显示"Hello world!".
如果我给出TextView一个ID textview1,并创建一个成员变量,TextView myTextView;那么我可以onCreate()在Activity 的方法中引用它,就像这样(当然没有编译器错误):
@Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");
if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().add (R.id.container,new PlaceholderFragment()).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我编译并运行APK,则会导致"不幸的是,FirstApp已停止".信息.
我以前通过将访问UI组件的启动代码移动到onStart()Activity 的方法中解决了这个问题,如下所示:
@Override
protected void onStart()
{
super.onStart();
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");
}
Run Code Online (Sandbox Code Playgroud)
这将导致一个工作的APK在左上角显示一个单独的TextView显示"Hello平板电脑!" - …